如何添加不同机器的活动netstat连接数?

时间:2010-06-08 19:50:02

标签: scripting shell unix

我已编写此代码以从一台计算机获取连接并将其与另一台计算机的连接数相加。

此代码未提供任何netstat,0即将进行实时活动连接。

#!/usr/bin/ksh -xvf
Machine_Detail="prpm@sp204|LC1_R11_LCP|LC1_R12_LCP|LC1_FR15_LCP|LC1_R16_LCP         prpm1@sp2048|LC1_R13_LCP|LC1_R14_LCP|LC1_R17_LCP|LC1_R18_LCP"

for i in $Machine_Detail
    do
        machine_connect=$(echo $i | cut -d'|' -f1)
        echo $machine_connect

        ssh $machine_connect
        Conn_count=**$(netstat -an | grep $`echo ${i} | cut -d'|' -f2`| wc -l | sed 's/ //g')**
        Conn_count=$((${Conn_count}+$(netstat -an | grep $`echo ${i} | cut -d'|' -f3` | wc -l | sed 's/ //g')))
        Conn_count=$((${Conn_count}+$(netstat -an | grep $`echo ${i} | cut -d'|' -f4` | wc -l | sed 's/ //g')))
        Conn_count=$((${Conn_count}+$(netstat -an | grep $`echo ${i} | cut -d'|' -f5` | wc -l | sed 's/ //g')))
        Total_Conn_Count=$((${Total_Conn_Count}+${Conn_count}))
        echo $Total_Conn_Count

        exit
    done

2 个答案:

答案 0 :(得分:1)

您需要将netstat命令作为ssh命令的参数发送,以便在目标计算机上执行。您可以使用egrep来利用管道字符来一步完成计数。我不确定你是否真的需要sed删除任何空格。

#!/usr/bin/ksh -xvf
Machine_Detail="prpm@sp204|LC1_R11_LCP|LC1_R12_LCP|LC1_FR15_LCP|LC1_R16_LCP         prpm1@sp2048|LC1_R13_LCP|LC1_R14_LCP|LC1_R17_LCP|LC1_R18_LCP"
for i in $Machine_Detail
do
    saveIFS=$IFS
    IFS='|'
    fields=($i)
    machine_connect=${fields[0]}
    keys="${fields[*]:1}"
    IFS=$saveIFS
    echo $machine_connect
    Conn_count=$(ssh $machine_connect "netstat -an | egrep $keys | wc -l")
    ((Total_Conn_Count += Conn_Count))
done
echo $Total_Conn_Count

答案 1 :(得分:0)

以下代码正常运行。

#!/usr/bin/ksh -xvf 
    Machine_Detail="prpm@sp204|LC1_R11_LCP|LC1_R12_LCP|LC1_FR15_LCP|LC1_R16_LCP         prpm1@sp2048|LC1_R13_LCP|LC1_R14_LCP|LC1_R17_LCP|LC1_R18_LCP" 
    for i in $Machine_Detail
    do
    machine_connect=$(echo $i | cut -d'|' -f1)
    echo $machine_connect

    Conn_count=$(ssh -f -T $machine_connect "netstat -an | grep "$(echo $(($(echo $i | cut -d'|' -f2))))" | wc -l | sed 's/ //g'")
    Conn_count=$((${Conn_count}+$(ssh -f -T $machine_connect "netstat -an | grep "$(echo $(($(echo $i | cut -d'|' -f3))))" | wc -l | sed 's/ //g'")))
    Conn_count=$((${Conn_count}+$(ssh -f -T $machine_connect "netstat -an | grep "$(echo $(($(echo $i | cut -d'|' -f4))))" | wc -l | sed 's/ //g'")))
    Conn_count=$((${Conn_count}+$(ssh -f -T $machine_connect "netstat -an | grep "$(echo $(($(echo $i | cut -d'|' -f5))))" | wc -l | sed 's/ //g'")))

    Total_Conn_Count=$((${Total_Conn_Count}+${Conn_count}))
    echo $Total_Conn_Count

    done