Помощь или совет по моему сценарию

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

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

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

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

Я нашел решение, но я новичок в bash / scripting и не знаю, как его реализовать. Мое решение состоит в том, чтобы проверить 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 в 17:03

1 ответ

Я не уверен, что понимаю ... но здесь я считаю количество уникальных строк из вывода grep.

grep "sudo /sbin/mount.vboxsf" /etc/rc.local | sort | uniq -c | wc -l

Два из эхо-линий, а два из командных строк. Всегда должно быть четыре, да?

0
ответ дан 14 January 2012 в 17:03

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

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