Tôi đang tạo một trình mô phỏng cục bộ (không kết nối với internet) bằng kết nối SSH. Tôi đã bắt đầu sshd trên một phạm vi cụ thể của số cổng và NATing một loạt các thiết bị cho những người. Tôi phải tìm số cổng hiện đang kết nối.Tìm số cổng hiện đang kết nối SSH
OS CentOS 5,5 OpenSSH 6.1
tôi đã thực hiện những điều sau đây. Nó hoạt động cho việc sử dụng bình thường (hướng dẫn sử dụng). Nhưng khi thử một thử nghiệm nghiêm ngặt (tự động) có vẻ như đôi khi nó thất bại trong việc tìm số cổng.
#!/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
mẫu grep của bạn cho PID phải là '$ PID /', vì nó được trình bày ở dạng đó trong đầu ra; nếu không, bạn có thể kết hợp không chính xác các cổng được đánh số giống với 'PID' mà bạn đang cố gắng khớp. – Petesh