Shell script a rsync o si no está montado - mount y rsync

1

Esto es lo que tengo hasta ahora:

! / bin / sh

Copia de seguridad de la carpeta de almacenamiento

Define el punto de montaje

LOCALMOUNTPOINT="/Volumes/thisisanetworkshare"

Verificaciones para el montaje

if mount | grep "on $LOCALMOUNTPOINT" > /dev/null; then

Si ya está montado, se inicia el trabajo rsync

caffeinate -i rsync -av /Users/auser/storage/ /Volumes/thisisanetworkshare/ --log-file=/Users/auser/rsync.log

De lo contrario, monta e inicia el trabajo rsync

else
    mkdir thisisanetworkshare
    mount_smbfs //thisnetwork/thisisanetworkshare /Volumes/thisisanetworkshare
    caffeinate -i rsync -av /Users/auser/storage/
    /Volumes/thisisanetworkshare/ --log-file=/Users/auser/rsync.log
fi

Básicamente, quiero iniciar un rsync si el recurso compartido de red ya está montado, pero si no lo está, me gustaría montar ese recurso compartido de red e iniciar un rsync.

El recurso compartido de red requiere autenticación, pero esto se guarda en el llavero, por lo que no lo solicita en el buscador. ¿Importa esto para un script de shell?

Gracias de antemano!

    
pregunta rupertbg 27.07.2015 - 02:42

1 respuesta

0

El uso de la sintaxis normal adecuada de la versión de línea de comandos del comando mount desde la línea de comandos o un script de bash para un SMB Share protegido por contraseña requerirá ingresar la contraseña, de una manera u otra. Sin embargo, desde un script de bash o una línea de comando, hay una manera de acceder a la contraseña del Llavero almacenada para montar el recurso compartido SMB sin ingresar la contraseña en el script de bash o desde la línea de comando.

Lo siguiente asume que tanto el Nombre de usuario como la Contraseña de autenticación para el recurso compartido SMB de destino se almacenan en el llavero del usuario.

Dado que el nombre de usuario y la contraseña de autenticación para el recurso compartido de SMB de destino se almacena en el llavero del usuario, el montaje del recurso compartido de SMB de destino se puede realizar a través de AppleScript dentro del script de bash o la línea de comandos usando el comando osascript .

En el siguiente ejemplo, compartí la carpeta Temp en otro sistema en mi red que tiene la dirección IP: 192.168.169.227

Primero lo monté a través del menú Ir del Finder > Conectar al servidor ... donde verifiqué la casilla de verificación "Recordar esta contraseña en mi llavero" para que esté almacenada en el llavero. Una vez hecho esto, desmonté el recurso compartido y usé el siguiente comando para montarlo desde un script de bash.

osascript -e 'tell application "Finder" to mount volume "smb://192.168.169.227/Temp"'

No tuve que crear previamente la carpeta "/ Volumes / Temp", ya que este método lo hace automáticamente, a diferencia de usar el comando mount -t smbfs //... donde el punto de montaje suministrado ya debe existir.

Entonces, a medida que escribe su script bash, use este método en lugar de la versión de línea de comandos normal del comando mount .

    
respondido por el user3439894 27.07.2015 - 04:15

Lea otras preguntas en las etiquetas