2012-08-23 11 views
5

Ich habe ein Skript, in dem ich die Rückkehrcodes sorgfältig auf Fehlerbedingungen überprüfe, damit ich im Falle eines Fehlers vorzeitig abbrechen kann. Ein Schritt dieses Skripts beinhaltet das Ausführen eines Befehls als root auf einer anderen Box, über ssh und sudo.Exit-Code von sudo-run-Prozess erfassen

Bedenken Sie:

ssh $HOST sudo $CMD 
echo $? 

ssh geht Codes Rückkehr wieder ganz gut, aber selbst wenn $ CMD einen von Null verschiedenen Exit-Code zurückgibt, sudo gibt noch 0 nach dem Ausführen des Befehls.

Wie erfasse ich den Rückkehrcode zu $ ​​CMD? Ich bin sehr davon überzeugt, dass es als Rückgabecode von ssh zurückgegeben wird, aber wenn es eine andere einfache Methode gibt, die nicht durch die Ausgabe von $ CMD verwechselt werden kann, bin ich ganz Ohr.

Antwort

4

Wie sich herausstellt, ist sudo der Rückgabecode ordnungsgemäß übergeben. Mein Testfall war sehr wahrscheinlich $ überschreiben? mit einer anschließenden Ausführung oder einem bedingten Test. Normalerweise verwende ich eine benannte Variable, um $? solche Dinge zu vermeiden, aber da bist du.

+0

Das gleiche hier - ich war das Ergebnis echo, also obwohl ssh den Statuscode korrekt übergab, Echo Echo 0 zurückgab. –