linux菜鳥日記(4),linux菜鳥日記

來源:互聯網
上載者:User

linux菜鳥日記(4),linux菜鳥日記
使用一個簡單的for迴圈和if判斷語句實現某個網段內所有ping所有客戶機的shell程式:

for i in {1..254}doif ping -c 1 192.168.10.${i} >/dev/null 2>&1;thenecho " ${i}通"elseecho "${i}未通 "fidone

在這裡i是一個迴圈變數,一共迴圈254次,${i}相當於192.168.10.0這個網段中從1~254的主機號。

for迴圈開始然後進行if判斷:

判斷 ping 192.168.10.xxx這個網段中的所有主機號中如果是標準輸出就 ">"(重新導向到)/etc/null這個檔案中

then 如果是標準輸出 那麼就顯示 ${i}(這個主機)通

 

"2>&1"  表示錯誤輸出同樣重新導向到/dev/null檔案下

else 如果是錯誤輸出 那麼就顯示${i}(這個主機)不通

 

在這段程式中 ping -c 1 表示每個主機只ping一次。

這段程式中主要的點就是  ”192.168.10.${i} >/dev/null 2>&1“

首先要明白 dev下的null檔案有什麼用。這個null檔案相當於windows下的資源回收筒,但是在這個null中的東西是無法恢複的。

在這裡ping 每個客戶機時如果有傳回值也就是ping通了,那麼就屬於一個標準輸出這個標準輸出就把他丟到 /dev/null中 如果不這樣做你ping的返回資料會佔用系統的某個空間。 在這裡所有標準輸出都會是1 而 2就表示錯誤輸出 ,&符號表示等同於   “2>&1” 這裡就表示 錯誤輸出 等同於 標準輸出(不代表 錯誤輸出 等於 標準輸出) 這樣才能將錯誤輸出也放到/dev/null中。

 

通過這樣一個for迴圈加if判斷就能實現ping所有主機號並返回一個 通 或者 沒通 的資訊。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.