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.pswp.cn/news/712934.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712934.shtml
英文地址,請注明出處:http://en.pswp.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…