У меня есть два разных сервера (A и B, оба являются Windows), и я выполняю замазку через командную строку между ними. Сервер A выполняет удаленно сценарий на сервере B, и все работает нормально, но я не могу получить выходные данные (ERRORLEVEL) на сервере A, как только сценарий был выполнен на сервере B. Я имею в виду, я могу получить выходные данные, но всегда говорит что процесс завершился успешно, даже если произошел сбой процесса на сервере B.

Я прилагаю небольшой пример процесса (ExProcess.bat) у меня на сервере B:

set LOG_PATH=C:\Project\Logs
set BIN_PATH=C:\Project\bin

cd %BIN_PATH%
C:
echo %date% %time% >> %LOG_PATH%\logfile.txt
EXECUTE_MY_COMMAND >> %LOG_PATH%\logfile.txt
if not %ERRORLEVEL%==0 exit %ERRORLEVEL% 

И вот как я делаю удаленный вызов с сервера A:

putty -ssh server02 -P 22 -l user1 -pw password1 -m C:\Project\SSH_PRG0001_CMPG0001.txt

SSH_PRG0001_CMPG0001.txt содержит удаленный пакет (C:\ExProcess.bat)

Если я выполню в командной строке Windows% ERRORLEVEL% после выполнения команды замазки, я не получу правильный вывод процесса, который я запустил удаленно.

Я проверил, что удаленный процесс возвращает правильную ошибку вывода на сервере B, но моя проблема в том, что я не могу получить этот вывод с сервера A.

Спасибо за вашу помощь

1 ответ1

0

Как вы обнаруживаете, это не будет работать.

%ERRORLEVEL% (который на самом деле не является "выводом", а скорее функцией локальной оболочки) возвращает состояние последней выполненной команды; на сервере B это EXECUTE_MY_COMMAND , как вы хотите - но на A это вместо putty ! Так как Putty успешно подключился и сделал свое дело, %ERRORLEVEL% равен 0, как и должно быть.

Вы можете изменить свой сценарий на B так, чтобы он заканчивался чем-то вроде echo %ERRORLEVEL% (вместо вашего оператора if ), затем захватывал этот вывод на A (например, через перенаправление) и реагировал соответствующим образом. Или, что бы ни было на А, которое отвечает на результат, вы могли бы вместо этого реагировать на В, делая весь процесс полностью автономным на сервере В и просто инициируемым соединением от А.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .