我如何修改这个测试,以便如果到端口 1234 的连接数大于 10,则执行命令(比如某件事echo
)?
[[ $(netstat -tan | awk '/:1234/ && /ESTABLISHED/{n++} END {print n+0}') = 2 ]
可能只是=10
并且如果更多的话会去吗else
?
[[ $(netstat -tan | awk '/:1234/ && /ESTABLISHED/{n++} END {print n+0}') = 10 ]
或者还有其他方法吗?
这是我的完整脚本
#!/bin/bash
servers=( "1.1.1.1" "2.2.2.2" "3.3.3.3" )
param=( 1 2 3 )
n=0
for i in "${servers[@]}"; do
ping -c 1 $i > /dev/null
if [ $? -eq 0 ]; then
snmptrap -v 2c -c public .... ${param[$n]}
fi
let $((n+=1))
done
if [[ $(netstat -tan | awk '/:3708/ && /ESTABLISHED/{n++} END {print n+0}') = 2 ]] ; then
#echo "conn ok"
snmptrap -v 2c -c public ...
fi
if [[ $(netstat -tan | awk '/:1234/ && /ESTABLISHED/{n++} END {print n+0}') -gt 10 ]] ; then
#echo "test"
snmptrap -v 2c -c public ...
fi
这是运行它的输出bash -x
++ netstat -na
++ grep :1234
++ grep ESTABLISH
++ wc -l
+ '[' 13 -gt 10 ']'
答案1
尝试一下这个方法:
if [[ VAR=$(netstat -tan | awk '/:1234/ && /ESTABLISHED/{n++} END {print n+0}') -gt 2 ]]; then echo $VAR; fi