如何使用shell 批量ping域名,生成一个结果文件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用shell 批量ping域名,生成一个结果文件?相关的知识,希望对你有一定的参考价值。
能ping通显示地名和对应的IP地址,不能ping通显示域名和no ping
脚本:
#!/bin/shfilename=domains.txt
ping_count=3
while read domain; do
x=$(ping -W 1 -c $ping_count $domain 2>/dev/null | grep -E "(PING)|(loss)")
loss=$(echo "$x" | grep "loss" | awk 'printf "%s", substr($6, 1, length($6)-1)')
if [ $loss -eq 100 ]; then
echo "$x" | grep "PING" | awk 'printf "%s no ping\\n", $2'
else
echo "$x" | grep "PING" | awk 'printf "%s %s\\n", $2, substr($3, 2, length($3)-2)'
fi
done <$filename
可适当调整每个域名 ping 的次数(ping_count),以保证准确度和性能。
数据文件:
cat domains.txt
www.baidu.com
www.taobao.com
www.qq.com
www.baidud.com
结果:
www.baidu.com 14.215.177.38
www.taobao.com 183.61.241.252
www.qq.com 59.37.96.63
www.baidud.com no ping
另:我理解那个“地名”应该是“域名”误写,如果真的需要地名,可以借助 whois 命令,甚至 IP 数据库(比如纯真数据库)。
参考技术A #!/bin/bashdomain="www.baidu.com www.google.com www.163.com"
num=10
for ip in $domain
do
echo "+++++$ip+++++++" >> result.txt
ping -c $num $ip >> result.txt
done
一个简单的ping脚本
domain中填入需要ping的域名
num填入ping的次数
最后ping的结果保存为一个名为result.txt的文件中
ping命令结果中如何显示时间
我的电脑一直掉线。我想记录什么时候掉线的请问怎么在结果中加上时间 就这个中 Reply from 218.4.77.16: bytes=32 time=11ms TTL=127Reply from 218.4.77.16: bytes=32 time=31ms TTL=127Request timed out.Request timed out.Request timed out.Request timed out.Request timed out.Request timed out.Reply from 218.4.77.16: bytes=32 time=21ms TTL=127Reply from 218.4.77.16: bytes=32 time=11ms TTL=127Reply from 218.4.77.16: bytes=32 time=12ms TTL=127Reply from 218.4.77.16: bytes=32 time=11ms TTL=127Reply from 218.4.77.16: bytes=32 time=12ms TTL=127Reply from 218.4.77.16: bytes=32 time=11ms TTL=127Reply from 218.4.77.16: bytes=32 time=11ms TTL=127Reply from 218.4.77.16: bytes=32 time=12ms TTL=127
可以通过批处理实现,在后面加上时间。
@echo off
d:
for /l %%i in (1,1,%999999999%) do (
ping %1192.168.1.1 -n 1% && echo %% >>ping.txt
date /t >>ping.txt
time /t >>ping.txt
)
pause
扩展资料:
注意事项
ping命令脚本:
:top
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2% 获取当前系统的年月日
echo %time% >> flogin.aspx_%BACKUPDATE%log.txt
ping -n 1 www.baidu.com | findstr "TTL" >> flogin.aspx_%BACKUPDATE%log.txt
goto top
:top
echo %time% >> gateway_%BACKUPDATE%log.txt 当前系统时间追加到txt文档中
ping -n 1 127.0.0.1 | findstr "TTL" >> gateway_%BACKUPDATE%log.txt
goto top
命令本身是不具备的,可以通过批处理实现,在后面加上时间,可以参考下面的代码:
@echo off
d:
for /l %%i in (1,1,%999999999%) do (
ping %1192.168.1.1 -n 1% && echo %% >>ping.txt
date /t >>ping.txt
time /t >>ping.txt
)
pause
扩展资料:
ping命令实现方式
ICMPPing
ICMP是一种将差错与控制集于一体的协议,不仅用于传输差错报文,还用于消息控制报文。
TCPPing
在进行ICMPPing的时候,如果在目标主机的网络网关过滤了ICMP Ping包,ICMPPing的结果就不准确了。
UDPPing
在TCP/IP协议组中,用户数据报协议(UDP)提供应用进程之间数据报传送的基本机制。
参考资料来源:百度百科-ping (网络诊断工具)
参考技术B 网络命令ping命令不支持显示时间。我们打开cmd,通过ping --help可以查询ping命令的所有参数。如果需要长ping,我们一般使用-t参数,如果限制ping的生存时间可以使用“-i 生存时间”具体使用如下:
ping ip地址或者域名 -t -i (1-255)如果中断的话,使用ctrl+c 参考技术C 请输入 ping --help来查看ping命令的所有参数,并没有你说的功能,不过可以通过外部软件来实现。思路是返回值为空就是掉线的时间。 参考技术D 把以下的代码保存成ping.bat 你要查记录,到C:\1.txt查看就行了del C:\1.txtping 218.4.77.16 >c:\1.txt:1timeping 218.4.77.16 >>c:\1.txtgoto 1
以上是关于如何使用shell 批量ping域名,生成一个结果文件?的主要内容,如果未能解决你的问题,请参考以下文章