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

目                     录

一、需求说明

二、解决方案

(一)解决思路

(二)方案

三、脚本程序实现

(一)脚本代码和解释

1、脚本代码

2、代码解释

(二)脚本验证

1、脚本编辑

2、给予执行权限

四、扩展




一、需求说明

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

二、解决方案

(一)解决思路

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

(二)方案

       (1)定义IP地址的范围

       (2)编写循环遍历语句

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

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

三、脚本程序实现

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

(一)脚本代码和解释

1、脚本代码

        如下为编写的bash代码:

#!/bin/bash
ip=192.168.1.
j=0
k=0
for i in `seq 3 102`
do
ping -c 3 $ip$i &> /dev/null
if [ $? -eq 0 ];then
echo 在线的主机有:$ip$i
let k++
else
let j++
echo $ip$i >> /tmp/ip.txt
date >> /tmp/ip.txt
fi
done
echo 不在线的主机台数有 $j
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、运行脚本,查看效果

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

[root@localhost home]# sh pc_online.sh
在线的主机有:192.168.1.3
在线的主机有:192.168.1.5
在线的主机有:192.168.1.6
在线的主机有:192.168.1.8
在线的主机有:192.168.1.23
在线的主机有:192.168.1.37
在线的主机有:192.168.1.39
在线的主机有:192.168.1.40
在线的主机有:192.168.1.41
在线的主机有:192.168.1.44
在线的主机有:192.168.1.48
在线的主机有:192.168.1.49
在线的主机有:192.168.1.54
在线的主机有:192.168.1.58
在线的主机有:192.168.1.68
在线的主机有:192.168.1.89
在线的主机有:192.168.1.100
在线的主机有:192.168.1.101
在线的主机有:192.168.1.102
在线的主机台数有 19
不在线的主机台数有 81[root@localhost home]#

四、扩展

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/712934.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CrossOver 24下载-CrossOver 24 for Mac下载 v24.0.0中文永久版

CrossOver 24是一款可以让mac用户能够自由运行和游戏windows游戏软件的虚拟机类应用,虽然能够虚拟windows但是却并不是一款虚拟机,也不需要重启系统或者启动虚拟机,类似于一种能够让mac系统直接运行windows软件的插件。它以其出色的跨平台兼容…

NVMe开发——PCIe复位

简介 PCIe中有4种复位机制,早期的3种被称为传统复位(Conventional Reset)。传统复位中的前2种又称为基本复位(Fundamental Resets),分别为冷复位(Cold Reset),暖复位(Warm Reset)。第3种复位为热复位(Hot Reset)。第4种复位被称为功能级复位…

js 正则记录

正则表达式 正则表达式创建一个正则表达式修饰符常用的特殊字符使用正则表达式的方法replace指定字符串作为替换项使用场景:交换字符串中的两个单词将"-"链接的方式改为驼峰式(忽略开头的-)将华氏温度转换为响应的摄氏温度 常用正则示例判断输入是否是正确…

使用docker安装dolphinscheduler

1、前提是安装docker和docker-compose 2、#mkdir /data/dolphinscheduler 3、镜像 docker load -i dolphinscheduler-mysql-driver.tar docker pull zookeeper:3.6.2:3.6.2 docker tag a7 bitnami/zookeeper:3.6.2 理论上postgresql也可以在线pull,但是在线do…

179基于matlab的2D-VMD处理图像

基于matlab的2D-VMD处理图像,将图片进行VMD分解,得到K个子模态图,将每个模态图进行重构,得到近似的原图。可以利用这点进行图像去噪。程序已调通,可直接运行。 179 2D-VMD 图像分解重构 图像处理 (xiaohongshu.com)

每日五道java面试题之spring篇(九)

目录: 第一题. 说一下Spring的事务传播行为第二题. 说一下 spring 的事务隔离?第三题. Spring AOP and AspectJ AOP 有什么区别?AOP 有哪些实现方式?第四题. JDK动态代理和CGLIB动态代理的区别第五题. 解释一下Spring AOP里面的几…

Hyperf crontab 定时任务组件

composer require hyperf/crontab autoload里面配置process和crontab,这里主要是对crontab配置里的其他任务属性配置进行尝试。 onOneServer singleton onOneServer 和 singleton 在crontab源码中src/Strategy/Executor.php 中decorateRunnable是控制是否执行的。…

【白嫖8k买的机构vip教程】Appium自动化(3):Appium-Desktop界面介绍

Appium-Desktop主界面包含三个菜单Simple、Advanced、Presets Simple界面: Host设置Appium server的ip地址,本地调试可以将ip地址修改为127.0.0.1;Port设置端口号,默认是4723不用修改Start Server 启动 Appium serverEdit Confi…

重生奇迹MU玩家容易遇到的问题

1、玩家可以在画面左上角座标旁找到「奇迹助手」的小按钮,用它来开启介面。 2、打怪范围:自动寻找所设定范围内的怪物,勾选后角色搜索范围内若无可攻击的目标,将会随机移动位置直到有攻击目标为止,但移动范围不超出所…

搭建LNMP环境并搭建论坛和博客

目录 一、LNMP架构原理 二、编译安装Nginx 三、编译安装MySQL 四、编译安装PHP 五、配置Nginx支持PHP解析 六、安装论坛 七、安装博客 一、LNMP架构原理 LNMP架构,是指在Linux平台下,由运行Nginx的web服务器,运行PHP的动态页面解析程序…

Node.js_基础知识(http模块)

网络基础 URL的组成结构:协议名: // 主机名 [:端口号] [/路径] [?查询字符串]协议默认端口: http:80,开发常用端口有 3000、8080、8090、9000https: 443 如果端口被其他程序占用,可以使用 资源监视器 找到占用端口的…

Python:练习:编写一个程序,录入一个美元数量(int),然后显示出增加%5税率后的相应金额。

案例: 编写一个程序,录入一个美元数量(int),然后显示出增加%5税率后的相应金额。格式如下所示: Enter an amount:100 With tax added:$105.0 思考: 1、录入一个美元数量,录入&am…

解决GitHub无法访问的问题:手动修改hosts文件与使用SwitchHosts工具

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…

【C++】一个求数组中最大元素的函数模板

题目 设计一个分数类 F r a c t i o n Fraction Fraction,再设计一个名为 M a x e l e m e n t Max_element Maxe​lement 的函数模板,能够求数组中最大的元素,并用该模板求一个 F r a c t i o n Fraction Fraction 数组中的最大元素。 C…

SpringBoot原理-配置优先级(黑马学习笔记)

配置优先级 在我们前面的课程当中,我们已经讲解了SpringBoot项目当中支持的三类配置文件: ● application.properties ● application.yml ● application.yaml 在SpringBoot项目当中,我们要想配置一个属性,可以通过这三种方…

Liunx前后端项目部署(小白也可安装)

文章目录 一、CentOS服务器的安装二、jdk安装三、Tomcat安装四、MySQL安装、五、nginX安装六、多个项目负载均衡,部署后端项目七、前端项目部署 一、CentOS服务器的安装 选择liunx,下面选择CentOS 7 ![在这里插入图片描述](https://img-blog.csdnimg.cn…

oracle安装RAC手动配置互信

cd $ORACLE_HOME/sshsetup grid的话是GI_HOME(一个节点上跑即可) ./sshUserSetup.sh -user oracle -hosts "vma vmb" -advanced -noPromptPassphrase集群(oracle,grid都要做) node1: [oracle node1~]$ ssh-keygen -t rsa //…

一文讲透:可视化大屏中3D元素的融入和使用方法

在可视化大屏中,3D元素融入的越来越多,贝格前端工场经常接到这类项目,很多老铁认为加个3D效果很easy,其实不然,工序非常复杂,总结如下。 一、什么是3D技术 三维展示(3D展示)是指使用…

[BUUCTF]-Reverse:reverse3解析

查看ida 从下图的/3和*4可以推断得出来是base64加密。 ida里大致意思就是我们输入的字符串经过base64加密,循环递减,最后等于str2,那我们输入的字符串就是flag。 完整exp: import base64 liste3nifIH9b_CndH print(len(list))fl…

循环简介和基本运算符

根据C Primer Plus第五章进行学习 文章目录 循环简介基本运算符 1.赋值运算符&#xff1a;2.加法运算符&#xff1a;3.减法运算符&#xff1a;-2.乘法运算符&#xff1a;*总结 1.循环简介 如下代码可以体现不使用循环的局限性&#xff1a; #include<stdio.h> #define AD…