测试环境 RHEL 5.6 bash
linux 下可以用 w 来查看当前登录用户信息;如果是SSH登录,也可查看 $SSH_CLIENT 得到登录用户信息,但如果是FTP等方式,则无法得到需要的信息;
但用 w 有个问题,如果是同个用户登录,则有多条信息,如果区分是个问题;最后解决方法如下:
w | tail -n +3 | awk 'BEGIN {ip="local"}{if ($5=="0.00s" || $3 != "-") ip=$3 fi} END {print ip}'
linux 下可以用history 查看历史执行命令,但默认没有记录操作时间,也无法查看是哪个客户端执行的命令;
可以用/usr/bin/script 来记录用户操作;
结合以上两个功能,可以将如下命令加入到 /etc/profile里面,执行记录用户IP及操作记录;
exec /usr/bin/script -a -f -q /var/log/script/$USER-`date +%Y%m%d%H%M`-`w | tail -n +3 | awk 'BEGIN {ip="local"}{if ($5=="0.00s" || $3 != "-") ip=$3 fi} END {print ip}'`.log