歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> linux菜鳥日記(4),linux菜鳥日記

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

日期:2017/3/3 18:10:20   编辑:學習Linux

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

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


使用一個簡單的for循環和if判斷語句實現某個網段內所有ping所有客戶機的shell程序:

for i in {1..254}
do
if ping -c 1 192.168.10.${i} >/dev/null 2>&1;
then
echo " ${i}通"
else
echo "${i}未通 "
fi
done

在這裡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所有主機號並返回一個 通 或者 沒通 的信息。

http://xxxxxx/Linuxjc/1164651.html TechArticle

Copyright © Linux教程網 All Rights Reserved