Получить уровень ошибки в сценарии cmd, вызывающем ssh

1437
Roman

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

Это всегда печатает 0. Как я могу получить реальный код ошибки, возвращаемый ssh?

|| как-то обнаруживает, что произошла ошибка.

1
Ну, `ssh` завершился чисто, поэтому возвращаемое значение * равно *` 0`. Der Hochstapler 11 лет назад 0
Это я поняла. Но как правильно получить код выхода, возвращаемый из сеанса SSH? Roman 11 лет назад 0
Вы можете добавить `; echo $?` К вашей команде, но это не установит переменную `errorlevel`: \ Der Hochstapler 11 лет назад 0

1 ответ на вопрос

2
Roman

Я нашел решение, благодаря следующему вопросу: https://stackoverflow.com/questions/11554324/batch-file-errorlevel-issue

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

Или даже проще

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

Последнее возможно только тогда, когда больше нет дополнительных строк сценария после exit, конечно

Чтобы узнать больше о enabledelayedexpansionразличиях оболочек для windows / unix: http://blogs.msdn.com/b/oldnewthing/archive/2006/08/23/714650.aspx

Похожие вопросы