2017-10-04 42 views
0

我開了一個新的問題,因爲我的原始人已經回答,不想改變主題。外殼腳本警報如果連接與相同的IP /端口掉落

我想監視多個連接進入兩個不同的端口,但具有相同IP的

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打印第1列,如果1001.1001.1001.1001:200不在輸出2次比警報意義如果發生故障仍然提醒10.1001.1001.1001缺少一個連接

以及如果10.1001.1001.102:3000不打印正確打印4倍即使它存在3提醒在netstat的輸出MES:

這裏是我當前的代碼是所有好,除了IP只爲警告一次,存在不失信

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 

回答

0

我還是對不太清楚要求。你把第一個字段叫做$process_name,但是在你的netstat輸出中是addr:port組合。 Linux和BSD上的實際輸出都將協議作爲第一個字段。此外,您似乎只是在尋找已建立的連接,但您使用netstat的-a開關,以便打印偵聽套接字?

所以假設你的輸出看起來像上面的,我會做這樣在Perl:

#!/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 -tpn來獲得活動的TCP連接和進程名稱,其輸出如下所示:

tcp  0  0 172.30.252.100:39056 52.216.18.58:80   ESTABLISHED 2000/chrome   
+0

Thanks @mbethke! 我試着在我的系統上運行,並得到以下錯誤: '在perlconnections.pl第19行中使用數字ge(> =)中的未初始化值。 在perlconnections.pl中使用未初始化值(。)或字符串第20行。 101.101.101.101:2000:需要2個連接,只能找到 在perlconnections.pl第19行的數字ge(> =)中使用未初始化的值。 在perlconnections中使用未初始化的值連接(。)或字符串。 pl line 20. 101.101.101.102:3000:需要5個連接,只能找到# – connollyc4

+0

你是對的,我只尋找建立的連接,所以沒有必要。在我的實際環境中,我正在尋找第四個領域。我只是把它作爲第一個提出來簡化問題。我的netstat與你的看起來很像:tcp 0 0 172.30.252.100:39056 52.216.18.58:80 ESTABLISHED 2000/chrome' ' – connollyc4

+0

你是對的,我沒有考慮過沒有連接的情況。我添加了一條防線。 – mbethke