получить код возврата от plink? - PullRequest
10 голосов
/ 03 ноября 2010

В пакетном сценарии DOS я запускаю одну команду на удаленном (также Windows) компьютере с помощью plink. Ранее эта команда выполнялась только на локальном компьютере и использовала код возврата для определения успеха. Есть ли способ легко вернуть эту информацию через plink?

Ответы [ 2 ]

6 голосов
/ 03 ноября 2010

Это невозможно с plink.Текущий консенсус заключается в том, чтобы иметь удаленный сценарий echo с его кодом выхода в файле журнала, а затем использовать pscp для передачи файла журнала на локальный компьютер.

См. http://fixunix.com/ssh/74235-errorlevel-capturing-plink.html.

2 голосов
/ 08 декабря 2016

с плинком 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)). Это, безусловно, самое надежное решение общего назначения, но вы должны убедиться, что ваш код выхода записан для возможности отладки.

...