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

ping单进程检测(挨个处理

#!/bin/bash
read -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" #这>里显示结果,""里代表字符串颜色 }
done
echo "扫描检测已结束。"

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

#!/bin/bash
read -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中不支持多线程的.这里&是采用多进程执行方式,{}里执行了,不管结束没结束继续执行下一条.done
wait #{}执行完,执行下一条,相当于高级语言多线程同步作用.
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不支持多线程,因此只能采用多进程的方式。具体的实现方法就是在要并发循环体中执行的命令后面加上“&”,将其转入后台执行,这样就可以在执行完一条命令之后,不必等待其执行结束,可以同时进行,提升效率。

来源:https://mefj.com.cn/lur3644.html

Shell多进程ping检测指定网段ip是否在线相关推荐

  1. python扫描局域网端口和ip_python实现扫描局域网指定网段ip的方法

    一.问题由来 工作的局域网中,会接入很多设备,机器人上的网络设备就2个了,一个巨哥红外,一个海康可见光.机器人还有自身的ip. 有时候机器人挂的多了,设备维修更换中,搞来搞去就不记得ip是什么,用自带 ...

  2. php如何扫描局域网ip,python实现扫描局域网指定网段ip的方法

    一.问题由来 工作的局域网中,会接入很多设备,机器人上的网络设备就2个了,一个巨哥红外,一个海康可见光.机器人还有自身的ip. 有时候机器人挂的多了,设备维修更换中,搞来搞去就不记得ip是什么,用自带 ...

  3. linux+ping网络脚本,使用ping命令检测整个网段IP的网络状态的shell脚本(图文)

    通过ping网段中的IP地址,根据返回的状态信息,判断主机的网络状态. 下面分享两个可以实现这个功能的shell脚本. 脚本1, 复制代码 代码示例: #!/bin/sh # Ping网段所有IP # ...

  4. SHELL脚本:检测一坨IP是否都能ping通(网卡监控)

    工作快3年了,期间遇见过不少problems,每次都是上网搜之.解决了就算完了.也不曾写过什么文章.最近看见好多帖子提出的问题都是我曾遇见过的,但下面的回复却几乎都没有帮楼主解决问题.于是乎.我觉得我 ...

  5. ping检测整个网段地址在线

    shell编写简单ping检测脚本,判断某个网段ip地址在线状态.其中存在部分设备可能未开启ping规则,无法ping通,故通过ping命令并不能准确判断出主机在线状态,需要配合其他检测方式进行检测判 ...

  6. linux测试内网速度慢,shell多线程快速检测内网ip是否存活

    之前写了一篇shell检测内网ip是否存活,对内网ip检测实在是太慢了,最近闲得蛋疼,决定用多进程来解决. #!/bin/bash # By rocdk890 # https://blog.slogr ...

  7. shell脚本ping检测服务器连通性

    shell脚本如下,执行脚本后,会将ping检测结果输出到一个ping_monitor.log日志文件中,脚本接收一个参数,即要检测的ip地址 #!/bin/sh MONITOR_LOG=/home/ ...

  8. linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)...

    本文中的脚本适用范围: 1)检测某些IP地址是否被占用: 2)检测网络中某些设备是否存活: 3)在分配新的ip地址之前,批量检测环境中是否存在冲突的机器 以上检测基于ICMP Ping报文,要求所有的 ...

  9. shell 实现ping检测存活主机(多进程后台实现)

    由于shell脚本没有多线程可以用,所以只能利用多进程的方法来提速了,后期会用高级语言编写, 下面介绍我的代码 用到的知识点: bash ./a.sh 和 .  ./a.sh 和 source ./a ...

最新文章

  1. BZOJ2132 圈地计划
  2. php自己遇到的一些问题
  3. c语言求布尔矩阵的乘积,离散数学 关系矩阵的布尔乘法的简便方法
  4. 杰理之串口1使用固定引脚的配置方法【篇】
  5. react-navigation之navigate
  6. 从云到「链」,京东云成为中国第四朵云背后
  7. 2022 我勇敢地走过
  8. 微信支付“举刀”挥向谁?
  9. java语言情话_用Java实现每天给对象发情话
  10. mysql 按分数段,每个专业分数段统计人数
  11. spring 代码执行 (CVE-2018-1273)
  12. 数字录波器的理解——如何完成这一过程的(无数学推导过程)
  13. 几个数字的组合方式种类个数
  14. HEVC量化:色度QP值
  15. can和could的用法_could的用法
  16. python面试题(六)——数据库mysql、redis篇
  17. 如何用TensorFlow开发不一样的AI足球智能分析预测软件
  18. 耐腐蚀INCONEL 625 合金性能是多少
  19. 软件开发团队如何有效地沟通与协作?
  20. 逆势增长300%,坚持长期主义的渐健家医在公共卫生体检如何弯道加速?

热门文章

  1. 木马是如何编写的(一)
  2. Deployer让部署变得更加的简单
  3. 举例:在从库上备份,到主库上恢复
  4. MyBatis多对多关系映射
  5. LLL —— SVP渐进算法(简记)
  6. 如何录制自己手机视频
  7. 计算机屏幕闪烁黑屏,台式机电脑。显示屏指示灯一直闪烁,屏幕黑屏。。...-显示器电源灯闪黑屏...
  8. java中时间的转换相关问题整理
  9. 着色Shading(1)(光照、着色)(笔记)
  10. 文件或目录结构损坏且无法读取快速恢复数据的方法