Як автоматично запустити команду після виходу з ssh


10

Як я можу автоматично запустити команду на локальному терміналі після виходу з sshз'єднання? Чи є якийсь гак або подія, яку можна було б вирішити для цього?

Відповіді:


13

Використовуйте aliasабо краще функцію.

Наприклад:

ssh () { command ssh "$@"; echo foobar; }

Тепер ви можете запустити:

ssh mysite

після виходу з sshсеансу echo foobarбуде запущено.

Змініть echo foobarфактичну команду, яку потрібно виконати, і, звичайно, ви можете скористатися кількома командами, якщо хочете.

Щоб визначення функції стало постійним, покладіть його у своє ~/.bashrc.


Також зауважте, що не завжди бажано мати функцію, названу так, sshколи ви хочете явно використовувати зовнішню ssh. У цьому випадку ви можете скористатися будь-яким із наведених нижче, щоб пропустити sshфункцію, щоб отримати зовнішній sshбінарний файл:

command ssh mysite

або перейменуйте функцію на щось інше, наприклад sshfunc:

sshfunc () { ssh "$@"; echo foobar; }

4
Примітка: Я рекомендую перейменувати функцію на щось інше, ніж на "ssh", тож ви зберігаєте ssh, це початкове значення ... можливо: ssh2? або sshcmd? (інакше ви можете забути його побічні ефекти, роблячи такі речі ssh user@host 'cd /somewhere/ && tar cf - | gzip -c -' > local_backup_of_somewhere.tgz:: це буде неправильно, оскільки він буде містити "foobar" наприкінці ...)
Олів'є Дулак

@OlivierDulac Добрий момент, відредаговано.
heemayl

\ ssh 'ssh' та "ssh" уникають лише псевдоніму, команда ssh запустить команду (уникаючи і псевдоніму, і функції).
Олів’є Дулак

@OlivierDulac Не знав цього, виправлено.
heemayl

Це так, як у баші, може, відрізняється від інших снарядів ... але тепер мені подобається ваша відповідь із цими доповненнями, ви отримуєте мою +1 ​​^^
Олів'є Дулак
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.