A continuación se muestra un ejemplo de script. Este script está modelado según las acciones que realiza la aplicación Finder. Para simplificar esta respuesta, se realiza una pequeña comprobación de errores.
#!/bin/bash
sudo mkdir -p "/Volumes/${1#*@}"
sudo chown $USER:staff "/Volumes/${1#*@}"
mount -t smbfs -o nodev,nosuid "$1" "/Volumes/${1#*@}"
mount | grep -q "/Volumes/${1#*@}" && open "/Volumes/${1#*@}"
Nota: Dado que se requiere que las carpetas se creen dentro del /Volumes
la contraseña del usuario puede ser solicitada por el script.
Si el script se guarda en el archivo connect
entonces la sinopsis sería la siguiente.
connect //user[:password]@server/share
A continuación se ofrece un ejemplo.
./connect //davidanderson@192.168.1.55/documents
En este ejemplo, el punto de montaje sería el siguiente.
/Volumes/192.168.1.55/documents
Para desmontar, la sinopsis sería la siguiente.
diskutil unmount /Volumes/server/share
A continuación se ofrece un ejemplo del comando para desmontar.
diskutil unmount /Volumes/192.168.1.55/documents
Comentario
Aunque la respuesta anterior está pensada para cumplir los requisitos indicados en la pregunta, la respuesta no es muy sólida. Si dos o más usuarios intentan acceder al mismo recurso compartido, el uso de la respuesta anterior dará lugar a un fallo. Básicamente, el problema es más bien que un usuario no puede utilizar el mismo punto de montaje al mismo tiempo. Una forma de evitar este problema sería colocar el punto de montaje en el $HOME/Volumes
en lugar de la carpeta /Volumes
carpeta. El nuevo script dado a continuación es una versión modificada del original script dado anteriormente. Este nuevo script coloca el punto de montaje en el $HOME/Volumes
carpeta.
#!/bin/bash
mkdir -p "$HOME/Volumes/${1#*@}"
chmod 700 "$HOME/Volumes"
chmod +a "group:everyone deny delete" "$HOME/Volumes"
mount -t smbfs -o nodev,nosuid "$1" "$HOME/Volumes/${1#*@}"
mount | grep -q "$HOME/Volumes/${1#*@}" && open "$HOME/Volumes/${1#*@}"
Nota: Desde /Volumes
no se utiliza, la contraseña del usuario no será solicitada por el script.
Si el script se guarda en el archivo connect
entonces la sinopsis sería la siguiente.
connect //user[:password]@server/share
A continuación se ofrece un ejemplo.
./connect //davidanderson@192.168.1.55/documents
En este ejemplo, el punto de montaje sería el siguiente.
"$HOME/Volumes/192.168.1.55/documents"
Para desmontar, la sinopsis sería la siguiente.
diskutil unmount "$HOME/Volumes/server/share"
A continuación se ofrece un ejemplo del comando para desmontar.
diskutil unmount "$HOME/Volumes/192.168.1.55/documents"