¿Cómo me aseguro de que las rutas de volumen basadas en SMB estén disponibles?

0

Mi máquina es mymac y la máquina remota es remotemac (ambas ejecutan El Capitan 10.11.6) - Me refiero a una acción en remotemac , ubicada en // remotemac / path / to / remoteshare, como / Volúmenes / control remoto.

Algunas veces, especialmente cuando me conecté recientemente a esa máquina remota o compartí desde el Finder, la ruta / Volumes / remoteshare está disponible. Pero después de algún tiempo, la ruta / Volumes / remoteshare no está disponible.

$ ls /Volumes
Macintosh HD
$ # connect to remoteshare from Finder
$ ls /Volumes
$ Macintosh HD    remoteshare
# After some time (a few hours)...
$ ls /Volumes
Macintosh HD 
$ # note that /Volumes/remoteshare is now missing

¿Qué puedo hacer en mi script bash para asegurar que el volumen de remotoshare esté presente o creado antes de que se haga referencia a él?

    
pregunta Anand 14.08.2016 - 06:43

1 respuesta

1

En una secuencia de comandos puede usar la siguiente construcción básica:

#!bin/bash

if mount | grep -q "remoteshare"; then # check if remoteshare is available 
    exit
else
    echo not found
fi

grep -q ... suprime la salida normal. Si tiene éxito el script sale. En el otro caso se repetirá "no encontrado".

En lugar de echo not found , puede ssh en el servidor remoto, ejecute serveradmin y habilite o reinicie el servicio smb - man serveradmin le mostrará cómo hacerlo. Luego salga de la sesión ssh e intente volver a montar el recurso compartido SMB.

Para ssh sin contraseña en el servidor habilitar la autenticación basada en clave : pasar una contraseña en un script es inseguro y erróneo propenso. Para usar serveradmin en el servidor remoto sin sudoing, modifique / etc / sudoers en el servidor remoto y cambie la parte:

## User privilege specification
##
root ALL=(ALL) ALL
%admin  ALL=(ALL) ALL

a

## User privilege specification
##
root ALL=(ALL) ALL
%admin  ALL=(ALL) ALL
your_remote_username ALL=(ALL) NOPASSWD: /Applications/Server.app/Contents/ServerRoot/usr/sbin/serveradmin

En lugar de la línea echo not found usa algo como esto entonces:

ssh username@remotemac
serveradmin stop smb
sleep 10
serveradmin start smb
sleep 2
exit
echo "SMB service was restarted"
mount_smbfs //your_remote_username:password@remotemac/folder /some/mntpoint

La inaccesibilidad de un recurso compartido de SMB puede tener muchas causas. Probablemente sea imposible cubrir todos los casos en un script.

    
respondido por el klanomath 14.08.2016 - 09:07

Lea otras preguntas en las etiquetas