Intereting Posts
debian-installer: прогресс в настройке отчета Как узнать, какие приложения установлены в Linux? Удалите строку, если регулярное выражение существует только в 1-м столбце каждой строки в файле csv размер ограничивающей рамки для шрифта TrueType upstart jobs – привилегированные и непривилегированные Как сделать LXTerminals открытым в Lubuntu 11.04? Как проверить, поддерживается ли привязка привязки к узлу в любой версии libvirt? Как опросить для Xvfb, чтобы быть готовым? Windows Server 2012 R2 и Centos 7 с двойной загрузкой: Windows ушла из меню загрузки Область переменной в нескольких трубах Различия между sudo и su в наследующей среде добавление дополнительных треков с помощью sox и командной строки Есть ли улучшенная версия «pick», которая будет работать с именами файлов с пробелами? Могут ли команды sed `y` применяться только к совпадающему тексту (а не ко всей строке) Окна, размещенные под док-станцией (планка) в XFCE

Сделать неудачный SSH вперед фатальной ошибкой

У меня есть сценарий, который подключается к удаленному хосту для репликации некоторых файлов через SSH. Я должен подключиться к демону rsync, прослушивая порт 873. Для этого у меня такая конфигурация ssh.

Host blah LocalForward 10873 127.0.0.1:873 Hostname 10.2.4.1 

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

Если я подключаюсь, когда открыт другой сеанс ssh, я получаю очевидное сообщение « Адрес уже используется» .

 me@local:~$ ssh blah bind: Address already in use channel_setup_fwd_listener: cannot listen to port: 10873 Could not request local forwarding. Linux remote 2.6.26-2-amd64 #1 SMP Tue Jan 25 05:59:43 UTC 2011 x86_64 motd... remote:~$ 

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

Для него есть опция конфигурации ssh (из ssh_config(5) ):

ExitOnForwardFailure
Указывает, должен ли ssh (1) прекратить соединение, если он не может настроить все запрошенные динамические, туннельные, локальные и удаленные пересылки портов. Аргумент должен быть «да» или «нет». По умолчанию используется “ no ''.

Поэтому в вашей конфигурации ssh вы можете добавить:

 ExitOnForwardFailure yes 

Или из командной строки:

 $ ssh -o ExitOnForwardFailure=yes blah