Bash 在一个脚本中Ping数百
我想在一个游戏上ping一些服务器,它们都是相同的格式,只是可能有数百个。这是我目前使用的:Bash 在一个脚本中Ping数百,bash,shell,ping,Bash,Shell,Ping,我想在一个游戏上ping一些服务器,它们都是相同的格式,只是可能有数百个。这是我目前使用的: ping server1.servername.com -n 20 | grep Minimum | awk '{print $3}' | sed s/,// >> Output.txt 这将对服务器进行20次ping操作,并删除除最小ping量之外的所有内容。如果我想ping 300台服务器,我必须将同一行粘贴300次。。。有没有可能让它在一行中只指定类似于1-300的内容,而不需要30
ping server1.servername.com -n 20 | grep Minimum | awk '{print $3}' | sed s/,// >> Output.txt
这将对服务器进行20次ping操作,并删除除最小ping量之外的所有内容。如果我想ping 300台服务器,我必须将同一行粘贴300次。。。有没有可能让它在一行中只指定类似于1-300的内容,而不需要300行相同的内容?您可以使用循环:
while read line
do
ping $line.servername.com -n 20 | grep Minimum | awk '{print $3}' | sed s/,// >> Output.txt
done < servers_list
您可以使用循环:
while read line
do
ping $line.servername.com -n 20 | grep Minimum | awk '{print $3}' | sed s/,// >> Output.txt
done < servers_list
基本上是通俗易懂的英语,这意味着当退出代码=0且增量i时,在不断行的情况下回显服务器名称,并以200ms的间隔对其进行20次ping,从ping结果中删除一个十进制数,然后再加上一个相等的空格,以完成回显行。该模式与Linux iputils ping摘要中的最小ping时间结果相匹配。如果ping失败,退出代码将不等于0,循环将中断
基本上是通俗易懂的英语,这意味着当退出代码=0且增量i时,在不断行的情况下回显服务器名称,并以200ms的间隔对其进行20次ping,从ping结果中删除一个十进制数,然后再加上一个相等的空格,以完成回显行。该模式与Linux iputils ping摘要中的最小ping时间结果相匹配。如果ping失败,退出代码将不等于0,循环将中断。听起来像是一个作业,例如
听起来像是一份工作,例如
哦,很好。如果你想提示用户你要ping多少次,我知道你可以手动编辑文件,把20改成任何数字,但是是的,300可以用一个变量代替。该变量可以通过多种方式填充。但是,如果是我,我觉得自己很黑客,我可能会做一个while循环,在ping没有出错的情况下进行测试,增加服务器号和循环。@Aaron-我刚刚添加了我在前面的评论中提到的while循环。你可能会发现它很有用。哦,很好。如果你想提示用户你要ping多少次,我知道你可以手动编辑文件,把20改成任何数字,但是是的,300可以用一个变量代替。该变量可以通过多种方式填充。但是,如果是我,我觉得自己很黑客,我可能会做一个while循环,在ping没有出错的情况下进行测试,增加服务器号和循环。@Aaron-我刚刚添加了我在前面的评论中提到的while循环。你可能会发现它很有用。
for (( x=1; $x<=300; x++ )); do ( ping server$x.servername.com -n 20 | grep Minimum | awk '{print $3}' | sed s/,// >> Output.txt ); done
#!/bin/bash
i=0
while [ $? -eq 0 ] && i=$(( i + 1 )); do (
echo -n "server$i min: "
ping server$i.servername.com -c 20 -i 0.2 | grep -P -o -e '(?<=\= )\d\.\d+'
); done
echo "n/a"
$ cat server-list | xargs -I% ping % -n 20 ...