在SSH服务器中,我想获取连接的客户端IP地址。我使用
$ who
或$ w
可以获得记录的信息(包括客户端的IP地址)
我只想要客户端的 IP 地址(一件事),在 shell 脚本中使用
答案1
它作为环境变量的一部分提供SSH_CLIENT
:
$ echo "$SSH_CLIENT"
SSH_CLIENT=192.168.0.101 39323 22
$ echo "$SSH_CLIENT" | cut -d' ' -f 1
192.168.0.101
答案2
对于所有用户尝试
w --no-header | awk '{print $1" "$3}'
简而言之
w -h | awk '{print $1" "$3}'
在那里您可以 grep 查找用户名。请记住,用户可以从不同的位置/IPS 多次登录。您还想检查是否可以强制 w 命令输出 IP 而不是主机名(取决于版本 -n 或 -i)
也许您还必须过滤掉本地登录(控制台)
答案3
另一种方法是使用netstat
和awk
。假设您使用协议端口 22 ssh
:
netstat -putan | awk '/:22 / && /ESTABLISHED/ {split($5,result,":"); print result[1]}'