• Linux系统运维脚本:shell脚本查看一定网段范围在线网络设备的ip地址和不在线的网络设备的数量(查看在线和不在线网络设备)


    目                     录

    一、需求说明

    二、解决方案

    (一)解决思路

    (二)方案

    三、脚本程序实现

    (一)脚本代码和解释

    1、脚本代码

    2、代码解释

    (二)脚本验证

    1、脚本编辑

    2、给予执行权限

    四、扩展




    一、需求
    说明

          一个网络中,经常会出现不知道一个主机、或者一个设备的IP地址,但是我们知道他在哪个范围。在windows系统中,有一些工具可以实现,但是在linux中,如何能快速实现呢?更进一步,如何能够统计出在线网络设备和不在线网络设备的数量呢?

    二、解决方案

    (一)解决思路

            查找某个设备是否在线,也就是看它是否正常在运行,我们最常用的是ping命令。大部分的网络设备都是可以进行ping回应的,ping不需要开任何端口,工作在IP层。所以,我们可以在脚本中查看ping的成功与否,来判断设备是否在线。

    (二)方案

           (1)定义IP地址的范围

           (2)编写循环遍历语句

           (3)在循环语句中,遍历所有的ip地址,并ping这些地址

           (4)根据成功与否,来判断是否在线?同时通过累加,统计在线和不在线的数量。

    三、脚本程序实现

            直接把脚本写出来,分享给大家。

    (一)脚本代码和解释

    1、脚本代码

            如下为编写的bash代码:

    1. #!/bin/bash
    2. ip=192.168.1.
    3. j=0
    4. k=0
    5. for i in `seq 3 102`
    6. do
    7. ping -c 3 $ip$i &> /dev/null
    8. if [ $? -eq 0 ];then
    9. echo 在线的主机有:$ip$i
    10. let k++
    11. else
    12. let j++
    13. echo $ip$i >> /tmp/ip.txt
    14. date >> /tmp/ip.txt
    15. fi
    16. done
    17. echo 不在线的主机台数有 $j
    18. echo 在线的主机台数有 $k

    2、代码解释

    (1)ip=192.168.1.:定义一个变量ip,并赋值为192.168.1.。

    (2)j=0:定义一个变量j,并初始化为0。这个变量主要用于跟踪不在线的主机数量。

    (3)k=0:定义一个变量k,并初始化为0。这个变量主要用于跟踪在线的主机数量。

    (4)for i in seq 3 102``:这是一个for循环,使用seq命令生成从3到102的数字序列,每个数字都赋值给变量i。

    (5)do:for循环的开始。

    (6)ping -c 3 $ip$i &> /dev/null:使用ping命令检查主机是否在线。-c 3参数表示发送3个ping请求。$ip$i是将ip变量和i变量的值连接起来,形成完整的IP地址。&> /dev/null是将所有的输出(标准输出和标准错误)都重定向到/dev/null,也就是忽略所有的输出。

    (7)if [ $? -eq 0 ];then:$?是一个特殊的变量,它保存了上一个命令的退出状态。如果ping命令成功(即主机在线),它的退出状态是0。

    (8)echo 在线的主机有:$ip$i:如果主机在线,输出该主机的IP地址。

    (9)let k++:将变量k的值加1,用于跟踪在线的主机数量。

    (10)else:如果主机不在线...

    (11)let j++:将变量j的值加1,用于跟踪不在线的主机数量。

    (12)echo $ip$i >> /tmp/ip.txt:将不在线的主机的IP地址追加到/tmp/ip.txt文件中。

    (13)date >> /tmp/ip.txt:将当前的日期也追加到/tmp/ip.txt文件中。

    (14)fi:if语句的结束。

    (15)done:for循环的结束。

            在执行完这个脚本后,你会在/tmp/ip.txt文件中看到所有不在线的主机的IP地址和它们被检测为不在线的日期。

    (二)脚本验证

    1、脚本编辑

            使用编辑器,比如vi,把代码输入进去;

            保存这个脚本到一个文件中,比pc_online.sh

    2、给予执行权限

          chmod +x w pc_online.sh

    3、运行脚本,查看效果

         可以运行这个脚本来检查进程的运行情况,如下:

    1. [root@localhost home]# sh pc_online.sh
    2. 在线的主机有:192.168.1.3
    3. 在线的主机有:192.168.1.5
    4. 在线的主机有:192.168.1.6
    5. 在线的主机有:192.168.1.8
    6. 在线的主机有:192.168.1.23
    7. 在线的主机有:192.168.1.37
    8. 在线的主机有:192.168.1.39
    9. 在线的主机有:192.168.1.40
    10. 在线的主机有:192.168.1.41
    11. 在线的主机有:192.168.1.44
    12. 在线的主机有:192.168.1.48
    13. 在线的主机有:192.168.1.49
    14. 在线的主机有:192.168.1.54
    15. 在线的主机有:192.168.1.58
    16. 在线的主机有:192.168.1.68
    17. 在线的主机有:192.168.1.89
    18. 在线的主机有:192.168.1.100
    19. 在线的主机有:192.168.1.101
    20. 在线的主机有:192.168.1.102
    21. 在线的主机台数有 19
    22. 不在线的主机台数有 81
    23. [root@localhost home]#

    四、扩展

            在实际使用中,你可能查看其他网段特定范围的主机情况,你可稍微做些修改,就可以适合您的应用了。比如,也可以查看192.1.10.1~254,你可以更改如下两行命令即可:

    1. ip=192.1.10.
    2. for i in `seq 1 254`

  • 相关阅读:
    Python特征选择
    Linux安装Zookeeper
    窗口类介绍
    leetcode做题笔记164. 最大间距
    百度率先在元宇宙举办大会,李彦宏:中国迎来AI黄金十年
    Mac下更新python
    Leetcode654 最大二叉树
    JVM基本概念、命令、参数、GC日志总结
    java计算机毕业设计体检系统源码+系统+数据库+lw文档
    layuiAdmin侧边栏菜单刷新保持当前页面
  • 原文地址:https://blog.csdn.net/weixin_70208651/article/details/136383464