Вопрос Как я могу подавить / etc / issue без потери сообщений об ошибках?


Можно ли сообщить клиенту ssh не печатать подключения /etc/issue на stdout при подключении к удаленному хосту, но распечатать любые другие сообщения диагностики (например, ошибки)?

Либо используя ssh -q или LogLevel quiet в ~/.ssh/config подавляет /etc/issue печать, но также отключить сообщения об ошибках. я пробовал touchИНГ ~/.hushlogin также - что останавливается /etc/motd печатается, но не влияет /etc/issue,

Наиболее очевидным решением является просто удалить /etc/issue, но политика компании диктует файл с ужасными предупреждениями о несанкционированном доступе. Это не подлежит обсуждению. К сожалению, у меня есть куча скриптов, которые проходят через довольно много хостов через ssh, а файлы журналов: a) очень большие и b) полные законных. Поскольку довольно много вещей работает без присмотра, я не хочу терять сообщения об ошибках, которые печатаются.


4
2017-12-17 14:52


происхождения


Лозы ног должны быть статическими. Я предлагаю автоматическое удаление из журнала с помощью awk или sed. Завтра я приду с решением. - Archemar


ответы:


да Добавить файл ~/.ssh/config содержащий:

LogLevel ERROR

OpenSSH отображает содержимое /etc/issue с удаленного сервера. Этот параметр отключает отображение. Очень полезно, когда компания удаляет Git repo как раздражающее предупреждение о безопасности.

ssh config страница руководства говорит:

LogLevel

Дает уровень детализации, который используется при регистрации сообщений   из ssh (1). Возможные значения: QUIET, FATAL, ERROR,    INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, а также DEBUG3,   По умолчанию используется INFO, DEBUG а также DEBUG1 эквивалентны.    DEBUG2 а также DEBUG3 каждый из них указывает более высокие уровни подробного вывода.


Дополнительный трюк Добавьте также в свой ~/.ssh/config

Host *
     StrictHostKeyChecking no

Это предотвращает другое раздражающее сообщение. При подключении к новому хосту следующий защитный вопрос блокирует текущее соединение. Вышеупомянутый трюк всегда предполагает yes, Тем не менее на практике вы всегда отвечаете yes, не так ли?

The authenticity of host 'newhostname (11.222.33.44)' can't be established.
RSA key fingerprint is aa:bb:cc:dd:ee:ff:11:22:33:44:55:66:77:88:99:00.
Are you sure you want to continue connecting (yes/no)?

6
2017-12-08 16:39





Ни мой OS X localhost, ни мой сервер Ubuntu не печатают /etc/issue когда я ssh в (ни с оболочкой, ни с выполнением удаленной команды), поэтому я не могу воспроизвести вашу проблему. Я попробую это по памяти.

Если вы не против создания двух соединений, вы можете сделать это:

num_lines="$(ssh yourhost 'cat /etc/issue' | wc -l)";
ssh yourhost 'your real command here' | tail +$(($num_lines / 2 + 1));

Первая команда ssh вызовет /etc/issue для печати дважды (один раз системой, один раз cat), поэтому количество строк будет вдвое больше /etc/issue, На выходе второй команды будет отображаться только выход из этого количества строк плюс один.


3
2018-02-21 15:03





Если в вашем журнале будет несколько сеансов, добавленных в один файл, вы можете заставить свой скрипт сделать что-то вроде echo START LOGGING перед запуском любых других команд, а затем echo END LOGGING перед отсоединением, а затем использовать простой скрипт оболочки (с помощью sed или awk), вычеркните все содержимое файла между END и START (то есть, шаблон перед каждым входом).

РЕДАКТИРОВАТЬ:

Теперь я вижу, что вы не регистрируетесь, но вместо этого ищете сообщения в окне - я рекомендую создавать журналы и сканировать журналы, а не полагаться только на вывод окон терминала - это намного более гибко и позволяет ссылаться на ошибки предыдущих сеансов если нужно.


3
2018-02-21 15:12





Нет.

Когда хост отправляет обратно строки текста, как клиент SSH может узнать, какие строки были связаны с хостом / etc / issue, а какие из них более интересны? Это невозможно.


0
2018-02-19 15:21



он может знать, потому что / etc / issue печатается перед запуском любых команд, он не будет отображаться в середине сеанса, когда-либо - Justin Smith


Вы можете установить это из командной строки с помощью:

ssh -o loglevel=ERROR

Если вы используете rsync (как это было в случае с Googling этой проблемой), вы можете сделать это, указав командную строку ssh connection для rsync следующим образом:

rsync -e 'ssh -o loglevel=ERROR'


0
2018-03-07 02:21