Obter saída ao usar massa remotamente

0

Eu tenho dois servidores diferentes (A e B, ambos são Windows) e estou executando putty via linha de comando entre eles. O servidor A executa remotamente um script no servidor B e tudo funciona bem, mas não consigo obter a saída (ERRORLEVEL) no servidor A depois que o script foi executado no servidor B. Quero dizer, posso obter a saída, mas sempre diz que o processo foi concluído com sucesso, mesmo que o processo no servidor B tenha falhado.

Eu anexei um pequeno exemplo do processo (ExProcess.bat) que tenho no servidor 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% 

E é assim que eu faço a chamada remota do servidor A:

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

SSH_PRG0001_CMPG0001.txt contém o lote remoto (C: \ ExProcess.bat)

Se eu executar na linha de comando do Windows% ERRORLEVEL% depois de executar o comando putty, não obtenho a saída correta do processo que executei remotamente.

Verifiquei que o processo remoto está retornando o erro de saída correto no servidor B, mas meu problema é que não consigo obter essa saída do servidor A.

Obrigado pela sua ajuda

    
por Jesus 25.03.2014 / 17:11

1 resposta

0

Como você está descobrindo, isso não funcionará.

%ERRORLEVEL% (que não é, na verdade, "saída", mas sim uma função do shell local) retorna o status do último comando executado; no servidor B, que é EXECUTE_MY_COMMAND , como você quer que seja - mas em A, é putty ! Como o Putty conectou-se com sucesso e fez o seu trabalho, %ERRORLEVEL% é 0, como deveria ser.

Você pode modificar seu script em B para terminar com algo como echo %ERRORLEVEL% (em vez de sua instrução if ), capturar essa saída em A (por exemplo, por redirecionamento) e reagir de acordo. Ou, seja o que for em A que esteja respondendo ao resultado, você poderia considerar reagir em B, tornando todo o processo inteiramente independente no servidor B e simplesmente acionado pela conexão de A.

    
por 25.03.2014 / 18:35