Forza l'esecuzione del comando al logout o alla disconnessione?


13

Sto effettuando l'accesso a un sistema tramite SSH e vorrei essere in grado di forzare l'esecuzione di un comando al logout, sia che si tratti di un logout intenzionale (uscita dalla shell) o perché la mia connessione SSH è stata interrotta / terminata. C'è un modo per impostare questo? La mia ipotesi migliore in questo momento è cambiare la shell di login in un programma che intercetta il segnale inviato alla chiusura di SSH (SIGHUP?) Ed esegue quindi il comando, ma mi chiedo se esiste una soluzione più pulita.


Vuoi eseguire il comando sul computer remoto o su quello da cui hai inizializzato la connessione?
xx4h,

Risposte:


20

Il modo migliore per farlo sarebbe usare pam .

In /etc/pam.davrai diversi file, uno di questi verrà chiamato sshd. Se si desidera influire solo su ssh e non su altri accessi (come una GUI o TTY reale), si desidera questo file.
Se si desidera influire su tutti gli accessi, è necessario un file "comune". Il nome di questo altro file 'comune' varia in base alla distribuzione, ma è possibile rintracciarlo seguendo le istruzioni includee substacknel sshdfile fino ad arrivare al file di base.

Dopo aver identificato il file in /etc/pam.dcui si desidera utilizzare, aggiungere una riga come la seguente alla sessionsezione:

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

Ciò comporterà la chiamata /etc/pam_session.shogni volta che qualcuno accede e si disconnette (con garbo o sgraziato).

Ora devi solo creare /etc/pam_session.sh. Di seguito è riportato un esempio che puoi utilizzare per eseguire qualcosa ogni volta che qualcuno si disconnette:

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

(non dimenticare chmod a+xla sceneggiatura)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.