2009-05-18 3 views
3

Ich schreibe ein Skript, um einige Dateien über sftp zu übertragen. Ich wollte die Übertragung als lokale Übertragung durchführen, indem ich das Verzeichnis mit sshfs mounte, da dies die Erstellung der erforderlichen Verzeichnisstruktur wesentlich erleichtert. Das Problem, das ich habe, ist, ich bin unsicher, wie man mit der Situation arbeitet, keine Netzwerkverbindung zu haben. Grundsätzlich muss ich feststellen, ob der Befehl sshfs fehlgeschlagen ist. Irgendwelche Ideen, wie das Skript dazu gebracht werden kann, einen Bail auszulösen, wenn das Remote-Verzeichnis nicht gemountet werden kann?Bash überprüfen, ob User mount fehlschlägt

Antwort

5

gerade testen Sie, ob sshfs liefert 0 (Erfolg):

sshfs [email protected]:dir mountpoint || exit 1 

Die oben genannten Arbeiten, weil in bash die logisch-oder || führt short-circuit evaluation. Eine schönere Lösung, die eine Fehlermeldung drucken ist folgende:

if !(sshfs [email protected]:dir mountpoint); then 
    echo "Mounting failed!" 
    exit 1 
fi 

Edit:

I would point out that this is how you check the success of pretty much any well behaved application on most platforms. – Sparr 1 min ago

der Tat. Noch ein wenig mehr: Die meisten Anwendungen geben bei Erfolg 0 und bei Fehlschlag einen anderen Wert zurück. Die Shell weiß dies und interpretiert daher einen Rückgabewert von 0 als wahr und jeden anderen Wert als falsch. Daher der logische oder der negative Test (mit dem Ausrufezeichen).

+1

Ich möchte darauf hinweisen, dass dies, wie Sie das überprüfen Erfolg von so ziemlich jeder gut erzogene Anwendung auf den meisten Plattformen. – Sparr

+0

Danke für Ihre Hilfe. Ich orientiere mich immer noch, wenn es um Bash geht. – Stephan

2

Ich habe versucht zu überprüfen, ob ein Verzeichnis kein Mountpoint für eine sshfs Mount war. Am Beispiel von oben fehlgeschlagen:

if !(mountpoint -q /my/dir); then 
    echo "/my/dir is not a mountpoint" 
else 
    echo "/my/dir is a mountpoint" 
fi 

Der Fehler: -bash: !(mountpoint -q /my/dir): No such file or directory

ich meinen Code geändert mit dem folgenden und hatte Erfolg:

if (! mountpoint -q /my/dir); then 
    echo "/my/dir is not a mountpoint" 
else 
    echo "/my/dir is a mountpoint" 
fi 
Verwandte Themen