shell脚本ping和telnet

shell脚本ping和telnet,第1张

很明显的一个错误就是if要用fi结束,你脚本里有两个if,我却只能找到一个fi;

第二点就是telnet那部分,telnet=`telnet $1 $2`应该就死住没反应了,你手动模拟一下就好了,比如我:

telnet 192.168.243.1 3131

Trying 192.168.243.1...

Connected to 192.168.243.1.

Escape character is '^]'.

^]

telnet>quit

Connection closed.

如果我不键入^](ctrl+])的话,这个telnet进程是不会结束的,不会结束的话,脚本也就不会进行下一步。

while true

do

if [ `ping -c 1 192.168.0.2|grep 100%|wc -l` -ne 0 ]then

echo diaoxian_192.168.0.2 >>log2

fi

done

脚本:

#!/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.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 数据库(比如纯真数据库)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11410172.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存