我有一个脚本,将由一个人使用SSH登录到服务器运行。
是否有一种方法可以自动找出用户从哪个IP地址连接?
当然,我可以询问用户(这是程序员的工具,所以这没有问题),但如果我自己找到答案,那就更好了。
我有一个脚本,将由一个人使用SSH登录到服务器运行。
是否有一种方法可以自动找出用户从哪个IP地址连接?
当然,我可以询问用户(这是程序员的工具,所以这没有问题),但如果我自己找到答案,那就更好了。
当前回答
netstat -tapen | grep ssh | awk '{ print $10}'
输出:
在我的实验中有两个
netstat -tapen | grep ssh | awk '{ print $4}'
给出IP地址。
输出:
127.0.0.1:22 # in my experiment
但结果和其他用户混在一起。它需要更多的工作。
其他回答
搜索“myusername”帐户的SSH连接;
获取第一个结果字符串;
以第五纵队为例;
通过“:”分割并返回第一部分(端口号不需要,我们只需要IP):
Netstat -tapen | grep "sshd: myusername" | head -n1 | awk '{split($5, a, ":");打印一个[1]}’
另一种方法:
我是谁| awk '{l = length($5) - 2;打印substr($ 5,2, l)}'
您可以使用命令:
server:~# pinky
它会给你这样的东西:
Login Name TTY Idle When Where
root root pts/0 2009-06-15 13:41 192.168.1.133
尝试以下方法获取IP地址:
who am i|awk '{ print $5}'
@Nikhil Katre的回答让我竖起大拇指:
让最后10个用户登录到计算机的最简单的命令是last|head。 要获取所有用户,只需使用last命令
使用who或pinky的人做了什么基本上是在问。但是但是但是他们不提供历史会话信息。
如果你想知道刚刚登录的人是谁,这可能也很有趣 当您开始检查时,已经注销了。
如果是多用户系统。我建议添加您正在寻找的用户帐户:
last | grep $USER | head
编辑:
在我的例子中,$SSH_CLIENT和$SSH_CONNECTION都不存在。
最后是一个简单的命令来获取最近登录到计算机的用户列表。这是最近的顺序,所以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)
...