Todos os shells têm uma maneira de executar algum código quando o shell sai: um trap. "Trap" é a palavra-chave do manipulador de sinal . Você pode definir uma armadilha para um sinal listando seu nome ( INT
, HUP
,…) ou seu número, ou use o valor especial 0
ou EXIT
para quando o shell sair normalmente (chegando ao fim) da entrada ou se exit
foi chamado).
trap 'echo "$IP_ADDRESS logged out at $(date)" >>"$LOG_FILE"' EXIT HUP INT TERM
Você não pode interceptar kill -KILL
ou falhas de energia.
Eu duvido que o que você está fazendo seja realmente útil. Esta informação já está registrada nos registros do sistema. É ainda mais confiável, porque você recebe uma entrada para kill -KILL
também. O comando last
mostra a data de início, a data de término e a origem (terminal ou endereço IP) de todas as sessões passadas e atuais desde a última rotação de log.