首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果连接使用相同的IP/端口丢弃,则发出Shell脚本警报

如果连接使用相同的IP/端口丢弃,则发出Shell脚本警报
EN

Stack Overflow用户
提问于 2017-10-05 06:00:22
回答 1查看 142关注 0票数 0

我打开了一个新的问题,因为我原来的问题已经回答了,我不想改变话题。

我正在尝试监控进入两个独立端口但具有相同IP的多个连接

示例

代码语言:javascript
复制
netstat -an |grep 000
101.101.101.101:2000        ESTABLISHED
101.101.101.101:2000        ESTABLISHED
101.101.101.102:3000        ESTABLISHED
101.101.101.102:3000        ESTABLISHED
101.101.101.102:3000        ESTABLISHED
101.101.101.102:3000        ESTABLISHED

我尝试做的是使用nestat和awk来打印第一列,如果1001.1001.1001.1001:200没有出现在输出中2次,这意味着如果出现故障,仍然会提示10.1001.1001.1001缺少一个连接

此外,如果10.1001.1001.102:3000没有打印4次警告,即使它在netstat输出中存在3次:

这是我当前的代码,除了IP只存在一次,警报不会失败之外,所有代码都很好:

代码语言:javascript
复制
connections=('101.101.101.101' '101.101.101.102')
running=( $(netstat -an |grep 000 |awk '{print $1}') )
non_running=()
for process_name in ${connections[@]}; do
    if [[ "${running[*]}" == *$process_name* ]]; then
        echo "$process_name is running"
    else
        echo "$process_name is not running"
    fi
done
EN

回答 1

Stack Overflow用户

发布于 2017-10-05 08:30:43

我仍然不太清楚这些要求。您将第一个字段称为$process_name,但在netstat输出中,它将是addr:port组合。Linux和BSD上的实际输出都将协议作为第一个字段。此外,您似乎只寻找已建立的连接,但您使用的netstat的-a开关,使其打印侦听套接字,也?

因此,假设您的输出类似于上面所示,我将在Perl中这样做:

代码语言:javascript
复制
#!/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";
}

您可能需要在read循环中调整正则表达式。我将使用netstat -tpn来获取活动的TCP连接和进程名称,其输出如下所示:

代码语言:javascript
复制
tcp        0      0 172.30.252.100:39056    52.216.18.58:80         ESTABLISHED 2000/chrome         
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46574847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档