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

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

Eu executo um comando remoto através do ssh e preciso analisar a saída desse comando. O stdout/stderr remoto é encaminhado corretamente 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 preciso fazer com que meus comandos remotos enviem suas próprias saídas para um par de arquivos remotos e depois os scp de volta para analisá-los com segurança?

Responder1

O cliente SSH possui duas opções para reduzir/eliminar o detalhamento.

Decara, 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 -yopção 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 10 de maio de 2012) suporta, mas outras não.

Você pode salvar os logs relativos 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.loge salve a seguinte linha nele:

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

Agora reinicie o rsyslog executando o seguinte comando:

sudo service rsyslog restart

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

grep "ssh\[$PID\]" /var/log/ssh.log

informação relacionada