標籤:shell linux 巡檢 ping
前言:
C語言有一定功底的同學能很快上手linux下的shell指令碼應用。以下指令碼以應用ping以檢測機房機架上個伺服器的連通性。並配以必要的註解
建立一個shell指令碼的簡單流程:
#vim filename.sh 建立並編輯指令碼
#chmod +x filename.sh 賦予指令檔執行許可權
#./filename.sh 執行指令碼
例子:
ping.sh
#!/bin/bash
#
PING() { #聲明一個函數PING,重複利用
if ping -c 1 -W 1 $1 &> /dev/null; then #ping一次某ip,等待時間為一秒。此處直接使用命令傳回值作為判定條件。一秒內收到傳回值則if判定的條件為真,否則為假。
echo "$1 is online."
else
echo "$1 is down!!!!!"
fi
}
while true; do #利用while的無限迴圈來持續輸出巡檢結果。
for I in {100..129}; do #巡檢連續的ip
{
PING 192.168.89.$I #此處為函數調用處,重複利用了PING函數。‘192.168.89.$I’作為PING()函數的參數($1=192.168.89.$I)
sleep 0.5 #輸出結果後睡眠半秒,給使用者一個查看時間。
}
done
for I in {89.243,40.1,42.1,49.1,47.1,60.1,54.1,56.1,44.1,42.3,78.1,78.9,222.222}; do #處理不連續的ip段
{
PING 192.168.$I
sleep 0.5
}
done
#下面一行為完成一次shell的巡檢後,給予使用者的資訊反饋
echo "Finish! PING process will restart 10 secomd later..
If you want to exit ,click Ctrl + Z
"
sleep 10
done
進階版本:
serping.sh
#!/bin/bash
#
PING() {
if ping -c 1 -W 1 $1 &> /dev/null; then
echo "$1 is online."
else
echo "$1 is down!!!!!"
fi
}
while true; do
for I in {‘501E‘,2.{2,4,5},1.123,14.60,1.30,1.23,2.20,‘301F‘,12.{8,5,6,7,3,2},‘502A‘,1.124,0.20,1.{20,25},‘502B‘,1.16,13.2,14.13,3.4,1.10,0.205,16.7,‘502C‘,1.42,16.{4,9,6},13.{4,1},1.24,13.7,16.8,‘502D‘,13.5,1.15,3.29,14.14,3.1,14.{4,7,11,12}}; do #機架名稱和ip字元放在for迴圈裡,連續的ip段使用{}簡化表示
{
if [ ${I:0:3} == ‘502‘ -o ${I:0:3} == ‘501‘ ];then #取字元前面三位元比較,如果為50X,則是機架號,直接輸出機架號
{
echo $I
continue #提前結束本次for迴圈
}
else
{
PING 192.168.$I
sleep 0.5
}
fi
}
done
echo "
Finish! PING process will restart 10 secomd later..
If you want to exit ,click Ctrl + Z
"
sleep 10
done
多學shell例子,就可以融會貫通了。
有興趣的同學可以複製粘貼到shell指令碼中測試。
本文出自 “zgysolution” 部落格,請務必保留此出處http://zgysolution.blog.51cto.com/9605745/1599131
shell指令碼實現機房伺服器巡檢(初步)