关闭终端时 Bash 脚本无法正常运行

关闭终端时 Bash 脚本无法正常运行

当我执行命令时,以下 Bash 脚本正确运行exit

#!/bin/bash
user=$(echo $(who am i) | awk '{print $1" "$5" "$3" "$4}')
formattedUser=$(echo $user | tr -d '()')
finalData=$formattedUser" to "$(date +"%Y-%m-%d")" "$(date +"%H:%M")
logoutTime=$(date +"%m/%d/%Y %H:%M")":00"
startDate=$(echo $(who am i) | awk '{print $3}')
startDateFinal=$(echo $startDate | tr '-' '/')
startTime=$(echo $(who am i) | awk '{print $4}')
startTimeFinal=$startTime":00"
loginTime=$startDateFinal" "$startTimeFinal

function diff_seconds {
    var1=$(date "+%s" -d "$1");
    var2=$(date "+%s" -d "$2");
    period=$(( $var1 - $var2 ));
}

diff_seconds "$logoutTime" "$loginTime"
periodMins=$(echo $(( period / 60 )))
finalDataToLog=$finalData" "$periodMins
echo $finalDataToLog | tee -a /home/amantha/log-sources/logout.log
chmod 777 /home/amantha/log-sources/logout.log

我在 .bashrc 中包含了上述 bash 脚本。

trap /home/amantha/log-sources/logout.sh EXIT

您可以看到下面的输出。

amantha 192.168.1.36 2020-10-05 10:29 to 2020-10-05 10:31 2

第 1 个字段 - 用户 第 2 个字段 - 用户 IP 第 3 个字段 - 登录日期 第 4 个字段 - 登录时间 第 5 个字段 - “to” 字 第 6 个字段 - 注销日期 第 7 个字段 - 注销时间 第 8 个字段 - 时间段

问题是当我关闭终端时它无法正常工作。输出:

to 2020-10-05 10:28 0

我这样做的目的是使用 ssh 确定用户的登录时间和注销时间。您有什么解决方案吗?上面的方法仅适用于退出命令。当我关闭终端或连接失败时,它无法正常工作。

相关内容