我有一个脚本,将由一个人使用SSH登录到服务器运行。

是否有一种方法可以自动找出用户从哪个IP地址连接?

当然,我可以询问用户(这是程序员的工具,所以这没有问题),但如果我自己找到答案,那就更好了。


当前回答

我在Debian 10上从who -m——ips得到以下输出:

root pts/0 12月4日06:45 123.123.123.123

看起来像一个新的列被添加,所以{打印$5}或“采取第五列”尝试不再工作。

试试这个:

who -m --ips | egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}'

来源:

@Yvan对@AlexP回答的评论 @Sankalp的回答

其他回答

在你的Linux机器上输入以下命令:

who
netstat -tapen | grep ssh | awk '{ print $10}'

输出:

在我的实验中有两个

netstat -tapen | grep ssh | awk '{ print $4}' 

给出IP地址。

输出:

127.0.0.1:22 # in my experiment

但结果和其他用户混在一起。它需要更多的工作。

 who | cut -d"(" -f2 |cut -d")" -f1
who am i | awk '{print $5}' | sed 's/[()]//g' | cut -f1 -d "." | sed 's/-/./g'


export DISPLAY=`who am i | awk '{print $5}' | sed 's/[()]//g' | cut -f1 -d "." | sed 's/-/./g'`:0.0

当通过ssh登录并需要显示远程X时,我使用它来确定会话的DISPLAY变量。

Netstat将工作(在顶部像这样) TCP 0 0 10.x.xx。xx: ssh someipaddress.or。建立domainame: 9379