我已编写此代码以从一台计算机获取连接并将其与另一台计算机的连接数相加。
此代码未提供任何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
答案 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