Come posso garantire che i percorsi del volume basati su SMB siano disponibili?

0

La mia macchina è mymac e la macchina remota è remotemac (entrambi eseguono El Capitan 10.11.6) - Faccio riferimento a una condivisione su remotemac , che si trova in // remotemac / path / to / remoteshare, as / Volumes / remoteshare.

A volte, specialmente quando mi sono collegato di recente a quella macchina remota o condivido da Finder, il percorso / Volumes / remoteshare è disponibile. Ma dopo un po 'di tempo, quel / Volumes / remoteshare path non è disponibile.

$ 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

Che cosa posso fare nel mio script bash per garantire che il volume della condivisione remota sia presente o creato prima che venga fatto riferimento?

    
posta Anand 14.08.2016 - 06:43
fonte

1 risposta

1

In uno script puoi usare il seguente costrutto di base:

#!bin/bash

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

grep -q ... sopprime l'output normale. In caso di successo, lo script termina. Nell'altro caso verrà echo "non trovato".

Invece di echo not found puoi ssh nel server remoto, eseguire serveradmin e abilitare o riavviare il servizio smb - man serveradmin ti mostrerà come farlo. Quindi esci dalla sessione ssh e prova a rimontare la condivisione SMB.

Per ssh senza password nel server abilita l'autenticazione basata su chiave - il passaggio di una password in uno script non è sicuro ed è un errore prona. Per utilizzare serveradmin sul server remoto senza sudo, modificare / etc / sudoers sul server remoto e modificare 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

Invece della riga echo not found usa qualcosa del genere allora:

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

L'inaccessibilità di una condivisione SMB può avere molte cause. È probabilmente impossibile coprire tutti i casi in uno script.

    
risposta data 14.08.2016 - 09:07
fonte

Leggi altre domande sui tag