От man 1 bash
:
Статус возврата конвейера - это статус выхода последней команды, если
pipefail
опция не включена. Еслиpipefail
включено, статус возврата конвейера - это значение последней (самой правой) команды для выхода с ненулевым статусом или ноль, если все команды завершаются успешно.
Тогда из man 1 ssh
:
ssh
Выход с состоянием выхода удаленной команды или с,255
если произошла ошибка.
Обычно (с pipefail
отключенным) вы получаете статус выхода ssh
. Возможное значение 255
может исходить от ssh
самого себя или от любой команды, которую вы запускаете на удаленной стороне (но «общие» ошибки обычно приводят к «низкому» состоянию выхода, например 1
, 2
). На практике 255
указывает, что что-то пошло не так.
Статус выхода доступен как специальный параметр $?
сразу после выхода из канала. Пример:
$ true | ssh no-such-address.example.org true # error message here, skipped $ echo $? 255
Чтобы получить более конкретную информацию ssh
, вам нужно проанализировать ее stderr. Смотрите руководство, особенно -E
(если доступно) и -v
опции. -E
указывает, в какой файл журнала ssh
следует писать, но вы получите аналогичный эффект, перенаправив stderr с помощью 2>/path/to/logfile
. О себе -v
:
-v
Детальный режим. Причиныssh
распечатки отладочных сообщений о его ходе. Это полезно при отладке проблем с подключением, аутентификацией и настройкой. Несколько-v
опций увеличивают многословие. Максимум есть3
.
Таким образом, общая процедура выглядит следующим образом: после ssh
выхода проверьте состояние выхода; если это так 255
, проанализируйте, произошел logfile
ли сбой «из-за проблем с подключением».