Примусити команду запускатись під час виходу або відключення?


13

Я входжу в систему через SSH, і я хотів би мати можливість примусити команду запускатись під час виходу, будь то навмисний вихід (вихід із оболонки) або через те, що моє з'єднання SSH перервано / припинено. Чи є спосіб встановити це? Моя найкраща здогадка зараз - це змінити оболонку входу на програму, яка перехоплює сигнал, що надсилається на закриття SSH (SIGHUP?) І виконує команду тоді, але мені цікаво, чи є чистіше рішення.


Ви хочете виконати команду на віддаленій машині або на тому, з якого ви ініціалізували з'єднання?
xx4h

Відповіді:


20

Найкращий спосіб зробити це - використовувати пам .

У /etc/pam.dвас буде кілька файлів, один з них буде називатися sshd. Якщо ви хочете впливати лише на ssh, а не на інші входи (наприклад, GUI або справжній TTY), вам потрібно цей файл.
Якщо ви хочете вплинути на всі входи, вам потрібен файл "загальний". Назва цього іншого "загального" файлу залежить від дистрибутива, але ви можете його відстежувати, дотримуючись includeта substackтвердження у sshdфайлі, поки не потрапите до базового файлу.

Визначивши файл, /etc/pam.dякий ви хочете використовувати, додайте до розділу такий рядок, як наступний session:

session     optional    pam_exec.so quiet /etc/pam_session.sh

Це призведе до виклику /etc/pam_session.shкожного разу, коли хтось увійде та вийде (будь то витончено чи невдячно).

Тепер вам просто потрібно створити /etc/pam_session.sh. Нижче наведено приклад, який ви можете використовувати для запуску чогось кожного разу, коли хтось виходить із системи:

#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then
  something
fi

(не забудьте до chmod a+xсценарію)

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