Я выполняю удаленную команду через 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