¿Cómo utilizar Shell para hacer ping por lotes a nombres de dominio y generar un archivo de resultados?
Script: #!/bin/sh
nombre de archivo=dominios.txt
ping_count=3
mientras?leer?dominio; ?do
x=$(ping?-W?1?-c?$ping_count?$dominio?2gt;/dev/null?|?grep?-E?"(PING)|(pérdida )")
loss=$(echo?"$x"?|?grep?"loss"?|?awk?'{printf?"s",?substr($6,?1,? length($6)-1)}')
si?[?$loss?-eq?100?];?entonces
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?lt;$filename
El número de pings (ping_count) para cada nombre de dominio se puede ajustar adecuadamente para garantizar la precisión y el rendimiento.
Archivo de datos:
cat domains.txt
www.baidu.com
www.taobao.com
www.qq.com
www.baidud.com
Resultado:
www.baidu.com 14.215.177.38
www.taobao.com 183.61.241.252
www.qq.com 59.37.96.63
www.baidud.com sin ping
Otro: entiendo que " "Nombre de lugar" debe confundirse con "nombre de dominio". Si realmente necesita un nombre de lugar, puede usar el comando whois o incluso la base de datos de IP (como la base de datos de Innocence).