解析活动连接的 netstat 结果的想法

解析活动连接的 netstat 结果的想法

我有几个远程设备,它们创建到我的服务器的反向 ssh 连接,以便我通过 ssh 连接到它们并远程管理它们。他们通过自定义端口连接回我。当我netstat -an | grep 127.0.0.0.1:在服务器上执行 a 操作时,我会得到当前连接的设备列表。输出如下所示:

tcp        0      0 127.0.0.1:6001          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:6002          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:6003          0.0.0.0:*               LISTEN

其中 600x 是设备连接的端口。我的问题是这样的。我想制作一个可以在服务器上运行的脚本,显示当前连接的设备。我想要一个脚本可以读取的配置文件,其中列出了我的设备,如下所示:

NORTH:6001

SOUTH:6002

EAST:6003

WEST:6004

该脚本将解析命令的输出netstat,输出将如下所示:

有效连接:北、南、东

非活动连接:WEST

我希望这不会太令人困惑。这是可以用 grep 和 awk 完成的事情吗?

答案1

这里分三步

  1. 只需从 netstat 中提取活动端口名称

    netstat -an | grep 127.0.0.1: | awk -F "[ :]+" '{print $5}'

指定awk一组空格和冒号作为分隔符,并仅选取端口 ID。

  1. device_list.txt通过使用 grep 和步骤 1 中命令的输出作为模式,比较设备列表文件(例如名为 )中的这些端口

    netstat -an | grep 127.0.0.1: | awk -F "[ :]+" '{print $5}' | grep -f - device_list.txt

这将给出这样的输出

NORTH:6001
SOUTH:6002
EAST:6003
  1. -v可以通过使用grep 中的a 来获取非活动连接

    netstat -an | grep 127.0.0.1: | awk -F "[ :]+" '{print $5}' | grep -v -f - device_list.txt

这个的输出是

WEST:6004

然后,您可以围绕上述内容编写脚本,以您想要的任何格式进行打印

相关内容