Автоматичне відновлення з'єднань SSH із конкретним сеансом "екрану"


10

У мене зазвичай є кілька вікон терміналів, кожне з яких підключено через ssh до віддаленого сервера. У кожному вікні я працюю за допомогою програми gnu screen, щоб забезпечити стійкість інтерактивних процесів у разі відключення.

В даний час, кожного разу, коли падіння ssh-зв’язку (наприклад, коли я переночую клієнтський комп'ютер спати протягом ночі), мені доведеться вручну і втомливо перезапускати сеанс ssh всередині кожного вікна, а потім у кожному вікні нудно відновити конкретний сеанс екрана (наприклад, "екран - r 3453 "в одному вікні," екран -r 3462 "в іншому тощо)

Чи є елегантний спосіб автоматизувати це? Конкретно:

  • підключіть сеанс ssh, якщо він припиняється, як тільки виявиться підключення до Інтернету

  • запустіть конкретний екземпляр екрана для вікна терміналу, як тільки ssh знову підключиться

Дякую за будь-які поради щодо цього

Відповіді:


10

Ви можете запустити це: ssh -t hostname screen -r 3453для підключення. Якщо ви хочете зробити це в циклі, я використовую наступне в сценарії.

while true; do
    ssh -t -o BatchMode=yes eeepc-rsi "screen -r 3453"
    sleep 2
done

Це найкраще спрацьовує, якщо у вас є налаштування ssh-ключів, щоб ви могли увійти, не ввівши пароль. Я також рекомендую подивитися на tmux, більш сучасну реалізацію екрана. Я фактично використовую вищезазначений сценарій із екраном. Ймовірно, ви також хочете використовувати названий екранний сеанс, а не просто використовувати pid, як у вашому прикладі.


Дякую! Для чого саме "-o BatchMode = так"?
GJ.

Це дозволить вам не запитувати пароль. З 'man ssh_config': "Запит паролів / паролів буде вимкнено. Ця опція корисна в сценаріях та інших пакетних роботах, де немає користувачів, щоб вказати пароль." Тому використовуйте його лише в тому випадку, коли у вас вже встановлені ssh-ключі.
Джейсон Аксельсон

5

Не потрібно рубати петлі. Потрібно зазирнути в автосш . Я не використовував його багато себе, але я розумію, що ви просто замінити sshз autosshвашою командою.

Редагувати: Насправді автосш поставляється зі скриптом, rscreenякий називається, розроблений саме для цієї мети.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.