Forçar comando para ser executado no logout ou desconectar?

10

Estou fazendo login em um sistema via SSH e gostaria de forçar um comando a ser executado no logout, seja um logout intencional (saindo do shell) ou porque minha conexão SSH caiu / foi terminado. Existe alguma maneira de configurar isso? Meu melhor palpite agora é mudar o shell de login para um programa que intercepta o sinal enviado no fechamento do SSH (SIGHUP?) E executa o comando então, mas estou me perguntando se existe uma solução mais limpa.

    
por David 11.06.2014 / 07:44

2 respostas

16

A melhor maneira de fazer isso seria usar o pam .

Em /etc/pam.d você terá vários arquivos, um deles será chamado de sshd . Se você quiser apenas afetar o ssh, e não outros logins (como uma GUI ou TTY real), você deseja este arquivo.
Se você quiser afetar todos os logins, você vai querer um arquivo 'comum'. O nome desse outro arquivo 'comum' varia por distro, mas você pode rastreá-lo seguindo as instruções include e substack no arquivo sshd até chegar ao arquivo base.

Depois de identificar o arquivo em /etc/pam.d que você deseja usar, adicione uma linha como a seguinte à seção session :

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

Isso resultará na chamada de /etc/pam_session.sh sempre que alguém fizer login e efetuar logout (seja de maneira elegante ou deselegante).

Agora você só precisa criar /etc/pam_session.sh . Abaixo está um exemplo que você pode usar para executar algo sempre que alguém fizer logout:

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

(não se esqueça de chmod a+x do script)

    
por 11.06.2014 / 08:01
0

Eu tentaria fazer isso com .bash_logout no sistema remoto.
Isso só funcionará se você efetuar logout / desconectar normalmente chamado por você.
Se, e. suas conexões são mortas por algo ou alguém,
não há execução de .bash_logout .

    
por 11.06.2014 / 08:00

Tags