Intereting Posts
При подключении через OpenVPN к моему VPS, как я могу перенаправить веб-трафик на Privoxy Имеет ли процесс, который не является процессом оболочки, переменными оболочки? автозаполнение с подстановочными знаками для cd в bash Как я могу найти домен сервера samba? Что YUM делает после завершения процесса yum-builddep создает зависимости от источника Где продолжение строки bash после && и || документально? Неизвестные записи sendmail в файле журнала Запуск нового экземпляра приложения вместо продолжения приостановленного Сеть Ubuntu: невозможно подключиться к локальной сети Как создать загрузочную Linux-установку USB из ISO в OS X? Поддерживает ли ubuntu touch / tizen полномасштабные программы командной строки и параметры командной строки? Есть ли способ определить, когда бинарный файл был скомпилирован или установлен? Как установить VertRefresh без перезапуска X? Есть ли простой способ добавления шрифтов?

дождитесь завершения подключения autossh

Я пытаюсь создать сценарий, который запускает несколько команд, которые требуют много времени для выполнения и требуют постоянного соединения, но

autossh user@server wait $! #or wait ${!} commandA commandB 

не работает (я предполагаю, потому что autossh падает в задний план). GUI всплывает, запрашивая пароль, и, пока это выполняется, запускаются следующие несколько команд.

Как подождать установленное соединение до запуска следующих команд?

Обновить:

autossh -f => "… заставляет autossh отбрасываться на задний план перед запуском ssh …"

поэтому с -f ждать ничего не делает, без него вы ждете на ssh, который никогда не закончится …

Если вы правильно поняли, ваша проблема заключается в том, что вы хотите дождаться завершения аутентификации, прежде чем продолжить работу с остальной частью вашего скрипта.

Я бы решил это с помощью аутентификации с открытым ключом и ssh-agent .

После того, как это настроено и запущен ssh-agent, ssh не будет запрашивать пароль, и ваш скрипт будет аутентифицироваться правильно каждый раз. (Это не совсем то же самое, что обеспечение соединения работает, но это может быть достаточно для ваших целей)

Приходят на ум два других обходных решения:

  1. Используйте tcptraceroute в цикле while, чтобы проверить, что работает переадресация порта (при условии, что вы используете порт вперед или можете создать его для этой цели). Не выходите из цикла, пока не получите успешный ответ.
  2. Поместите свои длинные команды в сценарий на удаленной стороне и выполните их на экране или nohup. Один трюк, который я использовал в прошлом, – это сгенерировать скрипт, затем скопировать его на удаленную сторону, а затем выполнить его с помощью nohup.