Сделать SSH действительно тихим

15

Я на полпути к написанию сценария nagios, и меня раздражает SSH.

Согласно справочной странице:

-q       Quiet mode.  Causes all warning and diagnostic messages to be
         suppressed.

Тем не менее, если я включаю тихий флаг, а затем передаю неверный порт, я все равно получаю сообщение об ошибке:

$ ssh user@localhost -q -p test
Bad port 'test'

Это проблема, потому что это сделает это сообщение первой строкой, и именно это захватывает Nagios. Мне нужно вывести что-то вроде «Warning | SSH error» после получения != 0кода выхода из ssh, но первая строка, которую я могу вывести, будет строкой 2.

Как я могу сделать SSH TRULY тихим?

Примечание: я не был уверен, стоит ли публиковать этот вопрос на serverfault, на суперпользователе или на stackoverflow. Я пошел с serverfault, так как пользовательская база, вероятно, наиболее опытна в работе с обходными решениями Cli SSH и Cli.

SimonJGreen
источник
2
Не то чтобы это действительно помогло, но похоже, что руководство было обновлено, чтобы отразить это. Начиная с OpenSSH 5.8 (и, возможно, ранее), в нем говорится, что « большинство предупреждений и диагностика» будут подавлены, а не « все предупреждения и диагностика».
Джеймс Снерингер
хех раздражает! хорошее место, хотя.
SimonJGreen
Почему бы просто не попытаться подключиться к неверному порту?
Зоредаче
1
@Zoredache Это перехват / обработка ошибок. Предотвращение опечатки не решает проблему того, как с ней справиться;)
SimonJGreen

Ответы:

25
ssh user@localhost -q -p test 2> /dev/null 

будет перенаправлен stderrв / dev / null.

Свен
источник
2
Теперь я чувствую себя полной синицей. Научит меня кодировать поздно ночью!
SimonJGreen
-2

Или самый простой способ хранения LogLevel QUIETв файле конфигурации:

$ cat ~/.ssh/config 
Host *
  IdentityFile ~/.ssh/id_rsa
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  LogLevel QUIET
  ...

В итоге получаю тот же результат, что и выше, с гораздо меньшим набором текста.

ура

todd_dsm
источник
1
Я отклонил ответ, потому что он не решает проблему, которая была задана здесь:% ssh -p test -oLogLevel = QUIET localhost Плохой порт 'test'
cstamas