Есть ли способ отличить вывод удаленной команды от вывода самого ssh?

Есть ли способ отличить вывод удаленной команды от вывода самого ssh?

Я выполняю удаленную команду через ssh и мне нужно проанализировать вывод этой команды. Удаленные stdout/stderr прекрасно перенаправляются ssh обратно на мой локальный компьютер на stdout/stderr моей локальной команды ssh. Однако это не удается, когда ssh мультиплексирует свои собственные сообщения о состоянии/ошибках на мой локальный stdout/stderr.

Есть ли способ заставить мою локальную команду ssh отправлять свои собственные сообщения в локальный файл? Или мне нужно заставить мои удаленные команды отправлять свои собственные выходные данные в пару удаленных файлов, а затем scp-анимировать их обратно, чтобы безопасно их проанализировать?

решение1

Клиент SSH имеет два переключателя для уменьшения/устранения многословия.

Отчеловек 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.

Переключатель -y, вероятно, то, что вам нужно, но он доступен не во всех версиях.

Текущая версия Ubuntu (OpenSSH_6.0p1 Debian-3ubuntu1, OpenSSL 1.0.1c 10 мая 2012 г.) поддерживает эту функцию, но другие версии могут ее не поддерживать.

При желании вы можете сохранить журналы, касающиеся ssh, в другом файле журнала.

Если вы используете, например, rsyslog, создайте файл /etc/rsyslog.d/ssh.logи сохраните в нем следующую строку:

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

Теперь перезапустите rsyslog, выполнив следующую команду:

sudo service rsyslog restart

Чтобы получить доступ к журналам, касающимся определенного процесса ssh с PID $PID, вы можете использовать grep:

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

Связанный контент