如何解析出第二列netstat
而不是第一列?如何解析netstat输出并提取第四列
另外,如果连接数低于预期IP数,我该如何使用mailx
发送电子邮件警报?
代码
#!/usr/bin/perl
use strict;
use warnings;
my %minimum = (
'101.101.101.101:2000' => 2,
'101.101.101.102:3000' => 5,
);
my %count;
open my $fh, '-|', 'netstat -an' or die "could not run netstat: $!";
while(<$fh>) {
next unless /^([0-9.]+:\d+000) /;
$count{$1}++;
}
close $fh;
while (my ($ip_port, $min) = each %minimum) {
$count{$ip_port} ||= 0;
next if $count{$ip_port} >= $min;
print "$ip_port: need $min connections, found only $count{$ip_port}\n";
}
这里是netstat
tcp 0 0 ::ffff:101.101.101.101:2000 ::ffff:10.151.89.57:8030 ESTABLISHED
我试图让上面的脚本来看看第四列
ffff:101.101.101.101:2000
,如果该输出地址不会出现两次然后警报。
10.101.101.102:3000
的相同概念在netstat
输出的第四列中应该出现不少于五次。
你想拆分你的输入以获得列作为数组。在cpan上还有一个netstat模块。如果您有多个问题,请分开提问。 – simbabque
@simbabque这里是我的netstat环境输出: 'tcp 0 0 :: ffff:101.101.101.101:2000 :: ffff:10.151.89.57:8030 ESTABLISHED'我试图让上面的脚本看看第四栏'ffff:101.101.101.101:2000',如果'101.101.101.101:2000'不退出2次,则警报。 10.101.101.102:3000的相同概念应该从第4列的netstat输出中退出不少于5次 – connollyc4
您所显示的代码中没有任何内容可以访问第四列。请说明你写了什么来解决这个问题。堆栈溢出既不是教程网站,也不是免费获取代码的地方。 – Borodin