Rufen Sie errorlevel im cmd-Skript auf, das ssh aufruft

1499
Roman

ssh -i private_linux_key user@machine "exit 1" || echo %errorlevel%

Dies wird immer gedruckt 0. Wie bekomme ich einen tatsächlichen Fehlercode, der von ssh zurückgegeben wird?

|| erkennt irgendwie, dass ein Fehler aufgetreten ist.

1
Nun, `ssh` wurde sauber beendet, der Rückgabewert * ist *` 0`. Der Hochstapler vor 11 Jahren 0
Ich verstehe das. Was ist der richtige Weg, um Exit-Code von der SSH-Sitzung zurückzugeben? Roman vor 11 Jahren 0
Sie könnten Ihrem Befehl `; echo $?` Hinzufügen, aber die Variable `errorlevel` wird nicht gesetzt: \ Der Hochstapler vor 11 Jahren 0

1 Antwort auf die Frage

2
Roman

Ich habe dank folgender Frage eine Lösung gefunden: https://stackoverflow.com/questions/11554324/batch-file-errorlevel-issue

setlocal enabledelayedexpansion ssh -i private_linux_key user@machine "exit 1" || echo !errorlevel! 

Oder noch einfacher

ssh -i private_linux_key user@machine "exit 1" exit %ERRORLEVEL% 

Letzteres ist nur dann möglich, wenn es keine weiteren zusätzlichen Skriptzeilen nach sind exit, natürlich

Lesen Sie mehr über enabledelayedexpansionUnterschiede zwischen Windows und Unix-Shells: http://blogs.msdn.com/b/oldnewthing/archive/2006/08/23/714650.aspx