Existe uma maneira de distinguir a saída de um comando remoto da saída do próprio ssh?

5

Eu executo um comando remoto através do ssh e preciso analisar a saída desse comando. O stdout / stderr remoto é encaminhado bem pelo ssh de volta para minha caixa local no stdout / stderr do meu comando ssh local. No entanto, isso falha quando o ssh multiplexa suas próprias mensagens de status / erro em meu stdout / stderr local.

Existe uma maneira de dizer ao meu comando ssh local para enviar suas próprias mensagens para um arquivo local? Ou eu preciso fazer meus comandos remotos enviarem suas próprias saídas para um par de arquivos remotos e então scp-los de volta para analisá-los com segurança?

    
por mathieu 29.12.2012 / 14:32

1 resposta

1

O cliente SSH tem dois switches para reduzir / eliminar a verbosidade.

De homem ssh :

-q       Quiet mode.  Causes all warning and diagnostic messages to be
         suppressed.

-y       Send log information using the syslog(3) system module.  By
         default this information is sent to stderr.

A opção -y é provavelmente o que você deseja, mas não está disponível em todas as versões.

A versão atual do Ubuntu (OpenSSH_6.0p1 Debian-3ubuntu1, OpenSSL 1.0.1c de 10 de maio de 2012) oferece suporte, mas outros não.

Você pode salvar os registros referentes ao ssh em um arquivo de log diferente, se desejar.

Se você estiver usando o rsyslog, por exemplo, crie o arquivo /etc/rsyslog.d/ssh.log e salve a seguinte linha:

:msg,contains,"ssh:" /var/log/ssh.log

Agora reinicie o rsyslog executando o seguinte comando:

sudo service rsyslog restart

Para acessar os registros referentes a um processo ssh específico com PID $PID , você pode usar o grep:

grep "ssh\[$PID\]" /var/log/ssh.log
    
por 29.12.2012 / 15:09

Tags