如何使用shell脚本获取SSH客户端IP地址?

如何使用shell脚本获取SSH客户端IP地址?

在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

另一种方法是使用netstatawk。假设您使用协议端口 22 ssh

netstat -putan | awk '/:22 / && /ESTABLISHED/ {split($5,result,":"); print result[1]}'

相关内容