2010-06-08 47 views
1

我已經編寫了這段代碼,以從一臺機器獲得連接,並將它們與另一臺機器的連接數相加。如何添加不同機器的活動netstat連接數量?

此代碼沒有給出任何netstat,0表示正在進行活動連接。

#!/usr/bin/ksh -xvf 
Machine_Detail="[email protected]|LC1_R11_LCP|LC1_R12_LCP|LC1_FR15_LCP|LC1_R16_LCP   [email protected]|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 

回答

1

你需要這樣它就會在目標機器上執行爲ssh命令的參數發送netstat命令。您可以使用egrep來利用管道字符來一步完成計數。我不確定是否真的需要sed來刪除任何空格。

#!/usr/bin/ksh -xvf 
Machine_Detail="[email protected]|LC1_R11_LCP|LC1_R12_LCP|LC1_FR15_LCP|LC1_R16_LCP   [email protected]|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 
+0

IFS ='|'無法解析: 運行結果: machine_connect = prpm @ sp204 | LC1_R11_LCP | LC1_R12_LCP | LC1_FR15_LCP | LC1_R16_LCP + acb.sh [10]:keys =「$ {fields [*]:1}」:錯誤替換 – Kimi 2010-06-09 08:25:17

+0

fields =($ i)也不在保護 field = $我在工作 爲什麼這樣? – Kimi 2010-06-09 09:38:18

+0

什麼版本的ksh? – 2010-06-09 10:46:50

0

以下一段代碼工作正常。

#!/usr/bin/ksh -xvf 
    Machine_Detail="[email protected]|LC1_R11_LCP|LC1_R12_LCP|LC1_FR15_LCP|LC1_R16_LCP   [email protected]|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 
相關問題