SSH接続を使用して(インターネットに接続されていない)ローカルシミュレータを作成しています。私はポート番号の特定の範囲でsshdを開始し、それらのデバイスの範囲をNATする。私は現在接続されているポート番号を見つけなければなりません。現在接続されているポート番号を見つける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'と同じ番号が付いたポートには、間違って一致する可能性があります。 – Petesh