с плинком 0,66
C:\Code>echo Y | "C:\Program Files (x86)\PuTTY\plink.exe" bob@myserver exit 42
C:\Code>echo %ERRORLEVEL%
42
Также из-за беспокойства @John Wiersba о невозможности установить соединение, похоже, это исправлено
C:\CodeMisc>echo Y | "C:\Program Files (x86)\PuTTY\plink.exe" bob@garbageservername exit 42
Unable to open connection:
Host does not exist
C:\Code>echo %ERRORLEVEL%
1
Также обратите внимание на то, что echo Y
... позволяет автоматически принимать отпечаток сервера (немного опасно, если не сказать больше ... но наш сервер входа в систему сбалансирован по нагрузке, поэтому вы всегда получаете разные отпечатки пальцев: ()
Однако, как отмечает @LeonBloy, plink все еще имеет некоторые условия подключения, которые возвращают нулевой код выхода. Если вы знаете свой диапазон кодов выхода и у вас нет хорошего способа связаться с окнами через файл. Вы можете либо +3 к коду выхода (если вы знаете, что код выхода никогда не будет == 253-255), либо вы можете применить побитовое ИЛИ (я бы предложил exit $(($?|128))
- в bash).
Или, если вас не интересует точный код выхода, вы можете вернуть 2 для успеха и ноль для ошибки. Таким образом, не-два кода выхода будут указывать на сбой. В bash это будет: echo $((($?==0) << 1))
. Это, безусловно, самое надежное решение общего назначения, но вы должны убедиться, что ваш код выхода записан для возможности отладки.