Ant*_*rus 6 linux ssh bash shell
我正在使用SSH连接创建一个本地模拟器(未连接到Internet).我已经开始使用特定范围的端口号进行sshd,并对一系列设备进行NAT处理.我必须找到当前连接的端口号.
OS CentOS 5.5 OpenSSH 6.1
我做了以下事情.它适用于正常使用(手动用户).但是当尝试严格的测试(自动化)时,似乎有时找不到端口号.
#!/bin/bash
WHOINFO=`who -m`
USERNAME=`echo $WHOINFO | awk 'NR==1{print $1}'`
PTSNUMBER=`echo $WHOINFO | awk 'NR==1{print $2}'`
USERSTR=$USERNAME"@"$PTSNUMBER
PID=`ps -eLf | grep $USERSTR | awk 'NR==1{print $3}'`
if [ -z "$PID" ];
then
exit
fi
PORTSTR=`netstat -natp | grep $PID | awk 'NR==1{print $4}'`
PORTNUMBER=${PORTSTR//*:/}
echo $PORTNUMBER
Run Code Online (Sandbox Code Playgroud)
tha*_*guy 13
OpenSSH服务器将设置变量$SSH_CLIENT,该变量包含由空格分隔的当前ip,客户端端口和服务器端口:
$ echo "$SSH_CLIENT"
127.0.0.1 59064 22
Run Code Online (Sandbox Code Playgroud)
要获取当前会话所连接的端口号,您可以使用echo ${SSH_CLIENT##* }.