天涼好個秋.

获得Linux某端口的连接IP列表

1236 阅 0 评 问题&解决方案

问题

获得连接到 Linux 服务器 1990端口的 IP 列表。提供服务的端口 IP 为192.168.1.1。

解决方法

netstat -nat | grep -i "192.168.1.1:1990 " | awk -F ' ' '{printf $5"\n";}' | awk -F ':' '{printf $1"\n"}' | sort |awk '!i[$1]++'

思路

  1. 通过 netstat 和 grep 获得所有访问的 line list。
    netstat -nat | grep -i "192.168.1.1:1990 "
  2. 通过 AWK 解析出 IP list。
    awk -F ' ' '{printf $5"\n";}' | awk -F ':' '{printf $1"\n"}'
  3. 通过 sort 和 AWK 去除掉重复的 IP。
    sort |awk '!i[$1]++'

    需要注意

在第二步中每一次 AWK 筛选中记得给匹配到的 每一个结果加上回车换行。

其他

在某些环境下去重复功能可以使用 sort 来实现。如 Openwrt 下提供的 sort 可以通过参数 u 来去除重复的 line。
这时的解决方法如下:

netstat -nat | grep -i "192.168.1.1:1990 " | awk -F ' ' '{printf $5"\n";}' | awk -F ':' '{printf $1"\n"}' | sort -u

将问题分解开来,如何分解,都是在不断的锻炼中获得的能力。

EOF