zoukankan      html  css  js  c++  java
  • Shell多进程ping检测指定网段ip是否在线

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

    ping单进程检测(挨个处理

    #!/bin/bash
    read -p "请输入IP网络位:" ip  #从键盘输入,注意ip前面要有个空格
    for i in $(seq 1 254) #seq用于生成数字1~254
           do
               {
                  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 是 "33[32;49;1m通的! 33[39;49;0m" ||
                  echo -e ping $ip.$i 是 "33[31;49;1m不通的! 33[39;49;0m" #这>里显示结果,""里代表字符串颜色 
                                                           }
    done
    echo "扫描检测已结束。"

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

    #!/bin/bash
    read -p "请输入IP网络位:" ip  #从键盘输入,注意ip前面要有个空格
    for i in $(seq 1 254) #seq用于生成数字1~254
        do
        { 
               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 是 "33[32;49;1m通的! 33[39;49;0m" || 
            echo -e ping $ip.$i 是 "33[31;49;1m不通的! 33[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

    作者:运维密码
    出处:https://mefj.com.cn/
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。

         扫一扫 运维公众号

  • 相关阅读:
    11111 Generalized Matrioshkas
    Uva 442 Matrix Chain Multiplication
    Uva 10815 Andy's First Dictionary
    Uva 537 Artificial Intelligence?
    Uva 340 MasterMind Hints
    SCAU 9508 诸葛给我牌(水泥题)
    Uva 10420 List of Conquests(排序水题)
    Uva 409 Excuses, Excuses!
    10/26
    11/2
  • 原文地址:https://www.cnblogs.com/mefj/p/15128283.html
Copyright © 2011-2022 走看看