Помощь или совет для моего скрипта

Я написал следующий скрипт, который вам может пригодиться при запуске Ubuntu на VirtualBox и использовании NetBeans.

  1. Установка приложения (NetBeans).
  2. Проверяет, работает ли Ubuntu с гостевыми дополнениями.

    1. g1]
    2. Пытается установить общую папку на основе имени проекта по умолчанию, которое обычно остается неизменным в любой системе (хост или гость).
    3. Записывает mount в rc.local для удобства использования.
    4. Создает и / или присоединяется к файлу в ящике пользователей, чтобы разрешить размонтирование папки.

    Скрипт работает безупречно, если вы не обновляетесь. В таком сценарии будет выполнено несколько монтировок, и сценарий unmount не будет функционировать так, как предполагалось, поскольку в /etc/mtab будет несколько записей.

    Это невозможно решить с использованием флагов umount, таких как -f -l -a -t, как обычно, это может привести к отключению всех монтируемых устройств. umount -a -t vboxsf на /target Не является желательным решением, так как может не потребоваться размонтировать все общие папки.

    Я придумал решение, но новичок в bash / scripting и don Не знаю, как его реализовать. Мое решение состоит в том, чтобы проверить rc.local на наличие возможных повторяющихся строк, чтобы избежать дублирования монтажа:

    #!/bin/bash
    #Author: Yucca Nel http://thejarbar.org
    #Will restart system
    PATH="/sbin:/usr/sbin:/bin:/usr/bin"
    export PATH
    
    #Modify these variables as needed...
    tempWork=/tmp/work
    startupScript=/etc/init.d/rc.local
    defaultNetBeansVersion=7.0.1
    
    echo "Provide NetBeans version (7.0.1 is default) then hit [Enter] :"
      read NetBeansVersion
    
      if [ -z "$NetBeansVersion" ]
        then
        $NetBeansVersion=$defaultNetBeansVersion
      fi
    
    mkdir -p /$tempWork;
    cd /$tempWork;
    
    wget http://dlc.sun.com.edgesuite.net/netbeans/7.0.1/final/bundles/netbeans-$NetBeansVersion-ml-javase-linux.sh;
    sh $tempWork/*sh;
    
    
    #Add Netbeans launcher to your PATH. Doing so allows you to run 'netbeans' command from the terminal
    #This line will need to be changed if you changed the default install location (IOW Netbeans is not in ~/)
    sudo ln -f -s ~/netbeans-$NetBeansVersion/bin/netbeans /usr/bin/;
    
    #If you use VirtualBox , you can share your projects between Host and guest. Name of shared
    #folder must match 'NetBeansProjects'
    mkdir -p $HOME/NetBeansProjects
    
    if [ -f /sbin/mount.vboxsf ]
    then
        sudo /sbin/umount /home/$HOME/NetBeansProjects
        sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects
    fi
    
    if mountpoint -q ~/NetBeansProjects
    then
    #Add it to the universal start script to automate process...
        sudo sed -ie '$d' $startupScript
        echo "sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects"| sudo tee -a $startupScript
        echo "exit 0"| sudo tee -a $startupScript
        sudo chmod +x $startupScript
    
    #Create a mount and unmount script file and add it to users local bin
        rm -rf $tempWork/*
        echo '#!/bin/bash' > $tempWork/netbeans-mount.sh
        echo '#!/bin/bash' > $tempWork/netbeans-umount.sh
        echo '#!/bin/bash' > $tempWork/mount-from-host.sh
        echo '#!/bin/bash' > $tempWork/unmount-from-host.sh
        echo "sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects" >> $tempWork/netbeans-mount.sh
        echo "sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects" >> $tempWork/mount-from-host.sh
        echo "sudo umount $HOME/NetBeansProjects" >> $tempWork/netbeans-umount.sh
        echo "sudo umount $HOME/NetBeansProjects" >> $tempWork/unmount-from-host.sh
        echo "exit 0" >> $tempWork/unmount-from-host.sh
        echo "exit 0" >> $tempWork/mount-from-host.sh
        echo "exit 0" >> $tempWork/netbeans-mount.sh
        echo "exit 0" >> $tempWork/netbeans-umount.sh
    
        sudo chmod +x $tempWork/*
        sudo mv -f $tempWork/*.sh /usr/local/bin
        rm -rf $tempWork
    fi
    
    #This function is used to cleanly exit with an error code.
    function error_exit {
        sleep 7
        exit 1
    }
    #restart
    sudo reboot
    exit 0
    

    Любые указатели? Моя цель - написать супер-скрипты для разработчиков Java, которые загружают наиболее необходимые инструменты на любой Linux (а не только Ubuntu) и монтируют потенциальные вещи, которые не нужно переустанавливать, если у вас есть существующий хост разработки. Такие вещи, как Maven, Tomcat, SVN, JBoss, не нуждаются в специальной гостевой установке, если они уже находятся на хост-системе, и есть дополнительные преимущества при объединении разных систем в один; например Windows может запускать браузер Photoshop и Safari, но Linux обеспечивает лучшую настройку и инструменты, такие как ssh из коробки.

0
задан 14 January 2012 в 19:03

0 ответов

Другие вопросы по тегам:

Похожие вопросы: