Ich erstelle einen lokalen Simulator (nicht mit dem Internet verbunden) mit SSH-Verbindung. Ich habe sshd auf eine bestimmte Reihe von Port-Nummern und NATing eine Reihe von Geräten zu denen gestartet. Ich muss die aktuell verbundene Portnummer finden.Aktuelle Verbindungsportnummer finden SSH
OS CentOS 5.5 OpenSSH 6.1
Ich habe folgendes getan. Es funktioniert für den normalen Gebrauch (manuelle Benutzer). Aber wenn Sie einen rigorosen Test (automatisiert) versuchen, scheint es, dass es manchmal fehlschlägt, die Portnummer zu finden.
#!/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
Ihr grep Muster für PID sollte '$ PID /' sein, wie es in dieser Form in der Ausgabe dargestellt wird; Andernfalls können Sie die Ports falsch zuordnen, die mit der PID identisch sind, mit der Sie übereinstimmen möchten. – Petesh