數組 bash shell

來源:互聯網
上載者:User

標籤:

http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html

 

#!/bin/bash# 指令碼檢測到離線主機會發送郵件通知,可一直運行。# 請根據你的需要設定 Mail gatewany ip lastip  四項  其餘不用設定Mail[email protected]163.com   #警示郵件接收地址gateway=192.168.1.253   #內網網關ip  測試內網是否正常outipaddr=202.96.134.134   #外網ip  測試外網是否正常ip="192.168.1."lastip=(142210211212220221222) #需要監控的主機列表 可以繼續添加142 210 211 212 220 221 222unlastip=()  #不線上主機列表length=${#lastip[@]}       #unlength=${#unlastip[@]}echo "一共有$length個伺服器在檢測"ps () {  #ping 線上主機列表ping $ip$1 -c 1 -w 2 |grep -q "ttl" #最多ping2次 時間2秒內 2秒實測ping2次 ping不通2秒自動停止if [ $? -eq 0 ];then ###  echo "ping $ip$1 pass"   ###通  else ###    不通  ping $gateway -c 1 -w 2 |grep -q "ttl" #本機ping網關 測試目的:防止本機脫離區域網路 if [ $? -eq 0 ];then ## 內網通       echo "ping $ip$1 lost"        ping $outipaddr  -c 2 -w 2 |grep -q "ttl" #本機ping外網  if [ $? -eq 0 ];then # 外網通 刪除離線主機  並進行郵件通知           echo "當前不通被刪除的ip為:$1"#          echo "添加前unlastip數組值為:${unlastip[@]}"#          echo "進行添加"           unlastip=(${unlastip[@]}  $1) # 把離線主機添加到離線列表中#          echo "添加成功"           unset lastip[i]   #從數組中刪除離線ip   不過echo  lastip[i]的值為空白  需要做以下操作           echo "當前離線主機列表:${unlastip[@]}"           m=${lastip[@]}           lastip=($m)            #刪除後剩餘數組內容重新賦值給數組           echo "當前線上主機列表:${lastip[@]}"                length=${#lastip[@]}       #                unlength=${#unlastip[@]}       # #    fi            echo `date`|mail -s "$ip$1 lost" $Mail ##發寄件提醒斷網時間            echo "******************* mail sent ************************"            else #  發送不成功            echo "sent mail failed,please check"   fi #     else ##  內網不通      echo "can‘t reach the gateway ,please check inet " #     continue fi ##fi ###}pu () {  #ping離線主機列表ping $ip$1 -c 1 -w 2 |grep -q "ttl" #最多ping2次 時間2秒內 2秒實測ping2次 ping不通2秒自動停止if [ $? -eq 0 ];then ###  列表中為不通的ip   這裡判斷是否又通了   echo "進行添加"   lastip=(${lastip[@]}  $1)   echo "添加成功"   unset unlastip[j]   #從數組中刪除原數      echo "當前線上主機列表:${lastip[@]}"   m=${unlastip[@]}   unlastip=($m)            #刪除後剩餘數組內容重新賦值給數組   echo "當前不線上主機列表${unlastip[@]}"   unlength=${#unlastip[@]}       #   length=${#lastip[@]}       #fi}while :;do # 死迴圈#改進後迴圈,unset${lastip[i]}刪除數組中ping不通的ip  if (($length>0));then #  線上主機列表非空就檢查列表中主機是否真的線上,如果不線上 ps函數將會把離線主機踢出線上列表    for ((i=0;i<$length;i++));do#echo ${lastip[i]}    ps ${lastip[i]}#exit    done  fi#改進前的迴圈,無法刪除數組原數#for i in ${lastip[*]};do # 迴圈ip列表#ps $i   # $i就是ps裡面的$1#echo "sum:"$sum#done#echo $unlengthsleep 1#echo "ps over and  pu start"  if (($unlength>0));then  # 有離線主機就開始檢查離線主機是否恢複線上,pu函數將對恢複線上的主機添加到線上主機列表中     for ((j=0;j<$unlength;j++));do         pu  ${unlastip[j]}     done  fi#  echo "pu over and ps start"   echo "當前線上主機列表:${lastip[@]}"   echo "當前不線上主機列表${unlastip[@]}"done

 

數組 bash shell

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.