我正在尝试创建一个脚本,用于ping其他内容,列表中的远程服务器。
这就是我所拥有的,但不断收到此错误:
./ monitor_sats.sh:无法为命令替换设置管道:打开的文件太多。
这是我的代码,感谢您的帮助。
#!/bin/bash
function ping {
for i in `cat server_list`
do
ping -c1 ${i} > /dev/null
if [ ${?} -eq 0 ]; then
echo "$(tput setaf 2)ON$(tput sgr0)"
else
echo "$(tput setaf 1)OFF$(tput sgr0)"
fi
done
}
echo "AMSTERDAM - Server $(ping) "
echo "HONG KONG - Server $(ping) "
echo "LONDON - Server $(ping) "
echo "SINGAPORE - Server $(ping) "
答案 0 :(得分:1)
更改功能名称如下;
#!/bin/bash
function pingToServer {
for i in `cat server_list`
do
ping -c1 ${i} > /dev/null
if [ ${?} -eq 0 ]; then
echo "$(tput setaf 2)ON$(tput sgr0)"
else
echo "$(tput setaf 1)OFF$(tput sgr0)"
fi
done
}
echo "AMSTERDAM - Server $(pingToServer) "
echo "HONG KONG - Server $(pingToServer) "
echo "LONDON - Server $(pingToServer) "
echo "SINGAPORE - Server $(pingToServer) "
你也可以使用它;
#!/bin/bash
Countries=("AMSTERDAM" "HONG KONG" "LONDON" "SINGAPORE")
counter=0
cat server_list | while read server;
do
ping -c1 ${server} > /dev/null
if [ ${?} -eq 0 ]; then
echo "${Countries[$counter]} - SERVER- $(tput setaf 2)ON$(tput sgr0)"
else
echo "${Countries[$counter]} - SERVER-$(tput setaf 1)OFF$(tput sgr0)"
fi
counter=$(($counter+1))
done
答案 1 :(得分:0)
这个脚本在语法上看起来是正确的,但有一些东西是有线的:为什么ping不同城市的相同服务器列表?
这让我觉得你没有给出整个背景......
另外,你能给出ulimit -a
的输出吗?并告诉列表的大小?
答案 2 :(得分:0)
for i in $(cat list_server) ;
do ping -c 1 -w 1 $i > /dev/null && echo "$i - OK" || echo "$i - NOK" ;
done