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 -y
cambio 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.log
y 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