700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Shell多进程ping检测指定网段ip是否

Shell多进程ping检测指定网段ip是否

时间:2023-12-06 17:44:39

相关推荐

Shell多进程ping检测指定网段ip是否

要实现Ping一个网段的所有IP,并检测网络连接状态是否正常,很多方法都可以实现,下面简单介绍两种,一种为单进程,一种为多进程。

ping单进程检测(挨个处理

#!/bin/bashread -p "请输入IP网络位:" ip #从键盘输入,注意ip前面要有个空格for i in $(seq 1 254) #seq用于生成数字1~254do{ping $ip.$i -c1 -s1 2>&1 1>/dev/null && #$ip和$i是两个传入参数代表网络位和主机位。2>&1 将标准>输出错误重定向标准输出到屏幕,/dev/null代表linux的空设备文件,也就>是将标准输出1重定向到/dev/null中,echo -e ping $ip.$i 是 "\033[32;49;1m通的! \033[39;49;0m" ||echo -e ping $ip.$i 是 "\033[31;49;1m不通的! \033[39;49;0m" #这>里显示结果,""里代表字符串颜色 }doneecho "扫描检测已结束。"

ping多进程检测(使用'&'+wait 实现)

#!/bin/bashread -p "请输入IP网络位:" ip #从键盘输入,注意ip前面要有个空格for i in $(seq 1 254) #seq用于生成数字1~254do{ ping $ip.$i -c1 -s1 2>&1 1>/dev/null && #$ip和$i是两个传入参数代表网络位和主机位。2>&1 将标准输出错误重定向标准输出到屏幕,/dev/null代表linux的空设备文件,也就是将标准输出1重定向到/dev/null中,echo -e ping $ip.$i 是 "\033[32;49;1m通的! \033[39;49;0m" || echo -e ping $ip.$i 是 "\033[31;49;1m不通的! \033[39;49;0m" #这里显示结果,""里代表字符串颜色 } & #注意在shell中不支持多线程的.这里&是采用多进程执行方式,{}里执行了,不管结束没结束继续执行下一条.donewait #{}执行完,执行下一条,相当于高级语言多线程同步作用.echo "扫描检测已结束。"

测试如图:

ping常用参数说明:

-c count:指定ping检测次数;-w deadline:设定检测时间为秒,不管能否通,达到限制时间就结束ping过程;-I interface:指定网络接口或者本机地址发出数据包;-t ttl :设置TTL(Time To Live)为指定的值,该字段指定IP包被路由器丢弃之前允许通过的最大网段数;-s packetsize:指定每次ping发送的数据字节数,默认为“56字节”+“28字节”的ICMP头,一共是84字节。包头+内容不能大于65535,所以最大值为65507(linux:65507, windows:65500);-W timeout:等待回复的时间,单位是毫秒。这个选项只在没有接到任何的回复的情况下有效,只要接到了一个回复,就将等待时间设置为两倍的RTT。如果没有设置,则等待时间设置为一个最大值;

总结:Shell不支持多线程,因此只能采用多进程的方式。具体的实现方法就是在要并发循环体中执行的命令后面加上“&”,将其转入后台执行,这样就可以在执行完一条命令之后,不必等待其执行结束,可以同时进行,提升效率。

来源:/lur3644.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。