我有一个脚本,将由一个人使用SSH登录到服务器运行。
是否有一种方法可以自动找出用户从哪个IP地址连接?
当然,我可以询问用户(这是程序员的工具,所以这没有问题),但如果我自己找到答案,那就更好了。
我有一个脚本,将由一个人使用SSH登录到服务器运行。
是否有一种方法可以自动找出用户从哪个IP地址连接?
当然,我可以询问用户(这是程序员的工具,所以这没有问题),但如果我自己找到答案,那就更好了。
当前回答
检查是否有一个环境变量叫做:
$SSH_CLIENT
OR
$SSH_CONNECTION
(或任何其他环境变量),在用户登录时设置。然后使用用户登录脚本处理它。
提取IP:
$ echo $SSH_CLIENT | awk '{ print $1}'
1.2.3.4
$ echo $SSH_CONNECTION | awk '{print $1}'
1.2.3.4
其他回答
通常在/var/log/messages(或类似的,取决于你的操作系统)中有一个日志条目,你可以用用户名来grep它。
netstat -tapen | grep ssh | awk '{ print $4}'
在你的Linux机器上输入以下命令:
who
搜索“myusername”帐户的SSH连接;
获取第一个结果字符串;
以第五纵队为例;
通过“:”分割并返回第一部分(端口号不需要,我们只需要IP):
Netstat -tapen | grep "sshd: myusername" | head -n1 | awk '{split($5, a, ":");打印一个[1]}’
另一种方法:
我是谁| awk '{l = length($5) - 2;打印substr($ 5,2, l)}'
最后是一个简单的命令来获取最近登录到计算机的用户列表。这是最近的顺序,所以last | head -n 1将显示最后一次登录。这可能不是当前登录的用户。
样例输出:
root pts/0 192.168.243.99 Mon Jun 7 15:07 still logged in
admin pts/0 192.168.243.17 Mon Jun 7 15:06 - 15:07 (00:00)
root pts/0 192.168.243.99 Mon Jun 7 15:02 - 15:06 (00:03)
root pts/0 192.168.243.99 Mon Jun 7 15:01 - 15:02 (00:00)
root pts/0 192.168.243.99 Mon Jun 7 13:45 - 14:12 (00:27)
root pts/0 192.168.243.99 Mon May 31 11:20 - 12:35 (01:15)
...