controllo bash se monte utente non riesce
Domanda
Sto scrivendo uno script per trasferire alcuni file su SFTP. Volevo fare il trasferimento come un trasferimento locale, montando la directory con sshfs perché rende la creazione della struttura di directory richiesta molto più facile. Il problema che sto avendo è che sono sicuri di come affrontare la situazione di non avere una connessione di rete. Fondamentalmente ho bisogno di un modo per dire se le sshfs Comando non riuscito. Delle idee come causa lo script per cauzione se la directory remota non può essere montato?
Soluzione
Basta verificare se sshfs
restituisce 0 (successo):
sshfs user@host:dir mountpoint || exit 1
I lavori sopra perché in bash logico-o ||
esegue valutazione di corto circuito . Una soluzione più bello, che consente di stampare un messaggio di errore è il seguente:
if !( sshfs user@host:dir mountpoint ); then
echo "Mounting failed!"
exit 1
fi
Modifica
Vorrei sottolineare che questo è il modo di verificare il successo di praticamente qualsiasi applicazione ben educati sulla maggior parte delle piattaforme. - Sparr 1 min fa
In effetti. Per elaborare un po 'di più: la maggior parte delle applicazioni restituiscono 0 in caso di successo, e un altro valore in caso di fallimento. Il guscio sa, e quindi interpreta un valore restituito di 0 come vero e qualsiasi altro valore come false. Da qui l'OR logico e il test negativo (utilizzando il punto esclamativo).
Altri suggerimenti
Stavo cercando di verificare se una directory non è stato un punto di montaggio per un sshfs
montaggio. Utilizzando l'esempio dall'alto non riuscita:
if !( mountpoint -q /my/dir ); then
echo "/my/dir is not a mountpoint"
else
echo "/my/dir is a mountpoint"
fi
L'errore: -bash: !( mountpoint -q /my/dir ): No such file or directory
Ho modificato il mio codice con il seguente e ha avuto successo:
if (! mountpoint -q /my/dir ); then
echo "/my/dir is not a mountpoint"
else
echo "/my/dir is a mountpoint"
fi