我使用SSH连接创建本地模拟器(未连接到互联网)。我已经开始在特定范围的端口号上使用sshd,并为这些端口号设置了一系列的设备。我必须找到当前连接的端口号。查找当前连接的端口号SSH
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
您的grep的PID模式应该是'$ PID /',因为它在输出中以这种形式呈现;否则,您可能会错误地匹配与您尝试匹配的“PID”编号相同的端口。 – Petesh 2013-05-09 08:15:14