如何使用shell 批量ping域名,生成一个结果文件?

发布网友 发布时间:2022-04-26 09:31

我来回答

3个回答

热心网友 时间:2022-06-26 20:07

脚本:

#!/bin/sh
filename=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.d.com


结果:

www.baidu.com 14.215.177.38

www.taobao.com 183.61.241.252

www.qq.com 59.37.96.63

www.d.com no ping


另:我理解那个“地名”应该是“域名”误写,如果真的需要地名,可以借助 whois 命令,甚至 IP 数据库(比如纯真数据库)。

热心网友 时间:2022-06-26 20:07

#!/bin/bash
domain="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的文件中

热心网友 时间:2022-06-26 20:08

显示地名是什么意思?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com