我使用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