if [ "$PAM_TYPE" = "open_session" ]; then
login_time=$(date)
msg_type="text"
content="用户 $username 登录系统:$hostname ($(curl ip.me)),IP地址为:$ip_address,登录时间为:$login_time,协议:$usetty"
fi
if [ "$PAM_TYPE" = "close_session" ]; then
msg_type="text"
content="用户 $username 登出系统:$hostname ($(curl ip.me)),IP地址为:$ip_address,登出时间为:$(date),协议:$usetty"
fi
1、检查 PAM 配置:在 Linux 系统中,PAM 配置文件通常位于
/etc/pam.d/
目录下。 可以检查/etc/pam.d/sshd
文件中是否包含以下内容:session optional pam_exec.so /path/to/MULI.sh
#需实际脚本文件存放路径。 如果没有这一行配置,可以手动添加。如果有这一行配置,可以检查脚本路径是否正确。2、检查 PAM 模块:在 Linux 系统中,PAM 模块通常位于
/lib/security/
目录下。 可以检查/etc/ssh/sshd_config
文件中是否包含以下内容:UsePAM yes
如果没有这一行配置,可以手动添加。如果有这一行配置,可以检查 PAM 模块路径是否正确。3、重启 SSH 服务:在修改 PAM 配置或者 PAM 模块后,需要重启 SSH 服务才能生效。 可以使用以下命令重启 SSH 服务:
systemctl restart sshd
4、如果以上方法都无法解决问题,可以尝试查看系统日志,以了解登录过程中是否出现了错误。 可以使用以下命令查看系统日志:
journalctl -u sshd
if [ "$PAM_TYPE" = "open_session" ]; then login_time=$(date) msg_type="text" content="用户 $username 登录系统:$hostname ($(curl ip.me)),IP地址为:$ip_address,登录时间为:$login_time,协议:$usetty" fi if [ "$PAM_TYPE" = "close_session" ]; then msg_type="text" content="用户 $username 登出系统:$hostname ($(curl ip.me)),IP地址为:$ip_address,登出时间为:$(date),协议:$usetty" fi
json_data="{\"msg_type\":\"$msg_type\",\"content\":{\"text\":\"$content\"}}"
curl -X POST -H "Content-Type: application/json" -d "$json_data" "$WEBHOOK_URL"
if [ "$PAM_TYPE" = "open_session" ]; then echo "$(date) - 用户 $username 登录系统,IP地址为 $ip_address" >> /var/log/login_notify.log fi
exit 0