天天看點

shell腳本之測試某網段内主機連通性

編寫shell腳本,測試某網段内主機連通性:

1.測試192.168.4.0/24整個網段的連通性(while版本)

2.測試192.168.4.0/24整個網段的連通性(for版本)

3.測試192.168.4.0/24整個網段的連通性(多程序版本)

++++++++++++++++++++++++++++++++++++++++++++++++++

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>#!/bin/bash</code>

<code>#Author:丁丁曆險(Jacob)</code>

<code>#定義變量i控制循環次數,i從1開始循環,每循環一次,i自加1,直到i等于254循環退出</code>

<code>#在每次循環中對一個IP進行ping測試,如果ping通,提示主機是UP的</code>

<code>#如果無法ping同,則提示主機是down的</code>

<code>#ping指令的-c選項控制ping測試的次數,-c2表示對目标主機執行2次ping測試</code>

<code>#ping指令的-i選項,控制多次ping測試的間隔時間預設為1秒,-i0.3可以提升ping的測試效率</code>

<code>#ping指令的-W選項,可以控制逾時時間,預設一個主機無法ping通,需要等很長的逾時時間,</code>

<code>#才會提示無法ping通,使用-W1,設定逾時時間為1秒。</code>

<code>i=1</code>

<code>while</code>  <code>[ $i  -</code><code>le</code>  <code>254 ]</code>

<code>do</code>

<code>          </code><code>ping</code> <code>-c2 -i0.3 -W1 192.168.4.$i  &amp;&gt;</code><code>/dev/null</code>

<code>         </code><code>if</code> <code>[ $? –</code><code>eq</code> <code>0 ];</code><code>then</code>

<code>               </code><code>echo</code> <code>"192.168.4.$i is up"</code>

<code>         </code><code>else</code>

<code>               </code><code>echo</code>  <code>"192.168.4.$i is down"</code>

<code>         </code><code>fi</code>

<code>         </code><code>let</code> <code>i++</code>

<code>done</code>

2. 測試192.168.4.0/24整個網段的連通性(for版本)

<code>#定義for循環變量i,執行循環次數為254次,i從1循環到254</code>

<code>#每次循環對某一台目标主機測試ping的連通性,ping指令的文法格式參考前面的while版本</code>

<code>for</code>  <code>i </code><code>in</code>  <code>{1..254}</code>

3. 測試192.168.4.0/24整個網段的連通性(多程序版本)

<code>#定義一個函數,ping某一台主機,并檢測主機的存活狀态,ping文法格式參考前面的while版本</code>

<code>myping(){</code>

<code>ping</code> <code>-c2 -i0.3 -W1 $1  &amp;&gt;</code><code>/dev/null</code>

<code>if</code>  <code>[ $? -</code><code>eq</code> <code>0 ];</code><code>then</code>

<code>echo</code> <code>"$1 is up"</code>

<code>else</code>

<code>echo</code> <code>"$1 is down"</code>

<code>fi</code>

<code>}</code>

<code>for</code>  <code>i </code><code>in</code>   <code>{1..254}</code>

<code>         </code><code>myping 192.168.4.$i &amp;</code>

<code>#使用&amp;符号,将執行的函數放入背景執行</code>

<code>#這樣做的好處是不需要等待ping第一台主機的回應,就可以繼續并發ping第二台主機,依次類推。</code>

<code></code>

本文轉自丁丁曆險51CTO部落格,原文連結:http://blog.51cto.com/manual/1971293 ,如需轉載請自行聯系原作者