He escrito el siguiente script que puede resultarle útil si ejecuta Ubuntu en VirtualBox y utiliza NetBeans. Los scripts pueden incluso usarse para otras necesidades de VirtualBox mientras intenta:
- Instalar una aplicación (NetBeans).
- Prueba si Ubuntu se está ejecutando con adiciones de invitados.
- Intenta montar una carpeta compartida basada en el nombre del proyecto predeterminado que normalmente permanece igual en cualquier sistema (host o invitado).
- Escribe el montaje para
rc.local
facilitar su uso. - Crea y/o agrega un archivo en la bandeja de usuarios para permitir que la carpeta se desmonte.
El script funciona perfectamente a menos que actualice. En tal escenario, se realizarán múltiples montajes y el script de desmontaje no funcionará según lo previsto ya que habrá múltiples entradas en el archivo /etc/mtab
.
Esto no se puede solucionar con el uso de umount
indicadores como este, -f -l -a -t
ya que normalmente esto puede provocar que se desmonten todos los montajes. umount -a -t vboxsf
en Tampoco /target
es la solución deseada, ya que puede que no sea necesario desmontar todas las carpetas compartidas.
Se me ocurrió una solución, pero soy nuevo en bash/scripting y no sé cómo implementarla. Mi solución es probar rc.local
posibles líneas duplicadas para evitar montajes duplicados:
#!/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
¿Algún consejo? Mi objetivo es escribir superscripts para desarrolladores de Java que descarguen las herramientas más necesarias en cualquier Linux (no solo Ubuntu) y monten cosas potenciales que no necesitan ser reinstaladas si tiene un host de desarrollo existente. Cosas como Maven, Tomcat, SVN, JBoss no necesitan una instalación especial de invitado si ya están en el sistema host y existen más beneficios al combinar diferentes sistemas en uno; por ejemplo, Windows puede ejecutar Photoshop y el navegador Safari, pero Linux proporciona una mejor personalización y herramientas como ssh listas para usar.
Respuesta1
No estoy seguro de haber entendido... pero aquí cuento el número de líneas únicas de la salida de grep.
grep "sudo /sbin/mount.vboxsf" /etc/rc.local | sort | uniq -c | wc -l
Dos provienen de las líneas de eco y dos de las líneas de comando. Siempre debería ser igual a cuatro, ¿no?