¿Hay alguna manera de distinguir la salida de un comando remoto de la salida del propio ssh?

¿Hay alguna manera de distinguir la salida de un comando remoto de la salida del propio ssh?

Ejecuto un comando remoto a través de ssh y necesito analizar el resultado de ese comando. La salida estándar/stderr remota se reenvía bien mediante ssh a mi cuadro local en la salida estándar/stderr de mi comando ssh local. Sin embargo, esto falla cuando ssh multiplexa sus propios mensajes de estado/error en mi stdout/stderr local.

¿Hay alguna manera de decirle a mi comando ssh local que envíe sus propios mensajes a un archivo local? ¿O necesito hacer que mis comandos remotos envíen sus propios resultados a un par de archivos remotos y luego volver a escanearlos para analizarlos de forma segura?

Respuesta1

El cliente SSH tiene dos conmutadores para reducir/eliminar la verbosidad.

Dehombre 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.

Probablemente el -ycambio sea lo que desea, pero no está disponible en todas las versiones.

La versión actual de Ubuntu (OpenSSH_6.0p1 Debian-3ubuntu1, OpenSSL 1.0.1c 10 de mayo de 2012) lo admite, pero es posible que otras no.

Puede guardar los registros relacionados con ssh en un archivo de registro diferente si lo desea.

Si está utilizando rsyslog, por ejemplo, cree el archivo /etc/rsyslog.d/ssh.logy guarde la siguiente línea en él:

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

Ahora reinicie rsyslog ejecutando el siguiente comando:

sudo service rsyslog restart

Para acceder a los registros relacionados con un proceso ssh específico con PID $PID, puede usar grep:

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

información relacionada