linux - 查找当前连接的端口号 SSH

标签 linux bash shell ssh

我正在使用 SSH 连接创建本地模拟器(未连接到互联网)。我已经在特定范围的端口号上启动 sshd,并将一系列设备 NATing 到这些端口号。我必须找到当前连接的端口号。

操作系统 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

最佳答案

OpenSSH 服务器会设置变量$SSH_CLIENT,其中包含当前ip、客户端端口和服务器端口,以空格分隔:

$ echo "$SSH_CLIENT"
127.0.0.1 59064 22

要获取当前 session 连接的端口号,您可以使用 echo ${SSH_CLIENT##* }

关于linux - 查找当前连接的端口号 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16456152/

相关文章:

linux - 如何注释文件中的缩进行

c# - 如果进程以编程方式运行(来自 C#),则“没有这样的文件或目录”

linux - 基本 bash 重定向

python - 如何用python自动化shell输入?

linux 期望语言-脚本不适用于 if 语句

android - 如何在编译android内核期间修复函数的隐式声明

bash - $?里面的 bash 陷阱

linux - 归档重新生成 shell 脚本

Ruby:捕获 system() 的输出并在终端中打印

json - 在 Shell 中将 MongoDB 文档转换为扩展 JSON