Ajuda ou conselho para o meu script

0

Eu escrevi o seguinte script que você pode achar útil se estiver executando o Ubuntu no VirtualBox e fizer uso do NetBeans. Os scripts podem até ser usados para outras necessidades do VirtualBox enquanto ele tenta:

  1. Instale um aplicativo (NetBeans).
  2. Testa se o Ubuntu está sendo executado com acréscimos de convidados.
  3. Tenta montar uma pasta compartilhada com base no nome do projeto padrão, que normalmente permanece o mesmo em qualquer sistema (host ou convidado).
  4. Grava a montagem em rc.local para facilitar o uso.
  5. Cria e / ou anexa um arquivo no escaninho de usuários para permitir que a pasta seja desmontada.

O script funciona sem falhas, a menos que você faça upgrade. Nesse cenário, várias montagens serão feitas e o script de desmontagem não funcionará como planejado, pois haverá várias entradas em /etc/mtab .

Isso não pode ser resolvido com o uso de umount de sinalizadores como -f -l -a -t , pois normalmente isso pode resultar na desmontagem de todas as montagens. umount -a -t vboxsf no /target Não é a solução desejada, pois pode não ser necessário desmontar todas as pastas compartilhadas.

Eu encontrei uma solução, mas sou novo no bash / scripting e não sei como implementá-lo. Minha solução é testar rc.local para possíveis linhas duplicadas para evitar a montagem duplicada:

#!/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

Algum apontador? Meu objetivo é escrever um super scripts para desenvolvedores Java que baixem as ferramentas mais necessárias em qualquer Linux (não apenas no Ubuntu) e monte coisas potenciais que não precisem ser reinstaladas se você tiver um host de desenvolvimento existente. Coisas como Maven, Tomcat, SVN, JBoss não precisam de instalação de convidado especial se já estiverem no sistema host e há outros benefícios em combinar sistemas diferentes em um; por exemplo. O Windows pode rodar o navegador Photoshop e Safari, mas o Linux oferece uma melhor personalização e ferramentas como o ssh.

    
por thejartender 14.01.2012 / 13:37

1 resposta

1

Eu não tenho certeza se eu entendi ... mas aqui eu conto o número de linhas únicas da saída do grep.

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

Dois vêm das linhas de eco e duas das linhas de comando. Deve sempre ser igual a quatro, sim?

    
por user8290 14.01.2012 / 15:36