Netstat连续刷新(监视更改输出)


18

我正在使用以下简单命令来监视我的Debian服务器上的连接(以处理最近的DoS攻击):

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

如何连续运行?因此它将每分钟刷新一次(当然,也可以是任何给定的时间)。我试着看:

watch -n 30 "netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n"

但是它将输出从具有多个连接的漂亮列表更改为如下所示:

1 tcp        0  10015 [LOCAL IP]
...
1 Proto Recv-Q Send-Q Local Address           Foreign Address         State
1 Active Internet connections (w/o servers)

因此,不会显示外部IP。有什么我想念的吗?

这是原始输出的样子:

  2 [IP ADDRESS]
  4 [IP ADDRESS]
  4 [IP ADDRESS]
  4 [IP ADDRESS]
  7 [IP ADDRESS]
 16 [IP ADDRESS]
 71 [IP ADDRESS]

我说的[LOCAL IP]是我机器的IP。

当我用-c它运行时,它会冻结。


您是否以root权限运行监视?该命令看起来很合理,并且看起来像在我的计算机上一样。不运行将不会打印地址,并且30秒后可能会显示错误消息。

@StewartPlatt我在根目录下运行它。我添加了原始命令输出。问题是,当我观看时-它仅输出我的 IP地址广告,而根本不会输出与我的IP连接的广告。

Answers:


22
netstat -c

如果我没有误解您的问题,可能会对您有所帮助。-c代表--continuous。

编辑:你去了:

watch -n 30 "netstat -ntu | awk '{print \$5}' | cut -d: -f1 | sort | uniq -c | sort -n"

我在$之前加了\。


已经尝试过,对不起,我没有在问题中指定。当我添加-c时,它会冻结。

我意识到,这5美元会在watch的输出中删除。也许存在引号问题。我挖就可以了..

谢谢,很高兴知道在手表中转义特殊字符

1

只需运行一会儿睡眠60秒的while循环

[root@host] $ while true
> do
> netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
> sleep 60
> done

每60秒就会给您相同的输出

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.