shell 學習二

配置變更:
現有某監控策略的配置文件如下
#最大監控項數量
MAX_MONITOR_NUM : 5
#當前監控項數量
CUR_MONITOR_NUM : 3
#監控配置
#配置說明:第一域爲IP信息,第二域爲服務器名,第三域爲監控類型(對於單網卡機器採用0類監控,對於雙網卡機器採用1類監控)
IP_ADDRESS0:(1.1.1.0) DOMAIN:(bd-test-machine0.bd) MONITOR_TYPE:(0)
IP_ADDRESS1:(1.1.1.1) DOMAIN:(bd-test-machine1.bd) MONITOR_TYPE:(0)
IP_ADDRESS2:(1.1.1.2,1.2.1.2) DOMAIN:(bd-test-machine2.bd,bd-test-machine2-in.bd) MONITOR_TYPE:(1)
#監控端口
MONITOR_PORT : 1234
現給出一份需要新增到該監控策略下的服務器列表,請根據給出服務器的情況編寫腳本更新現有配置,要求
1、當前監控數爲添加之後的監控總數,如變更後當前監控數大於最大監控數則需要對最大監控數進行對應調整
2、IP信息中的編號在現有基礎上順序遞增
3、判斷新增服務器的網卡屬性,按註釋中的監控類型說明對具體的MONITOR_TYPE賦值(假設腳本運行環境對新增機器已有信任關係,可直接ssh登陸)
 

vi chang_conf.sh

#!/bin/bash
##
## 第二個練習題 最後修改於 4.16 10:30
####文件及目錄信息
D=`pwd`
iplist="host.txt"
conf_flie="2.conf"
###找出當前的序號
num=`grep IP_ADDRESS ${conf_flie}|tail -n 1 |awk -F ':' '{print $1}'|cut -c 11-`
###最後一條記錄的行號
line=`awk "/IP_ADDRESS$num/{print NR}" ${conf_flie}`
###
cd ${D}
### 最大 當前 以及即將插入的監控數量
MAX_NUM=`awk '/MAX_MONITOR_NUM/{print $NF}' ${conf_flie}`
CUR_NUM=`awk '/CUR_MONITOR_NUM/{print $NF}' ${conf_flie}`
INS_NUM=`wc -l < ${iplist}`
let NEW_NUM=${CUR_NUM}+${INS_NUM}

#####插入當前監控項數量##
if [ "$NEW_NUM" -lt "$MAX_NUM" ]; then
        sed -i "s/CUR_MONITOR_NUM : ${CUR_NUM}/CUR_MONITOR_NUM : ${NEW_NUM}/g" ${conf_flie}
else
        sed -i "s/CUR_MONITOR_NUM : ${CUR_NUM}/CUR_MONITOR_NUM : ${NEW_NUM}/g" ${conf_flie}
        let NEW_MAX_NUM=${MAX_NUM}+2
        sed -i "s/MAX_MONITOR_NUM : ${MAX_NUM}/MAX_MONITOR_NUM : ${NEW_MAX_NUM}/g" ${conf_flie}
fi
###插入配置說明###
for i in $(cat ${iplist})
do
        let line=$line+1
        let num=$num+1
        echo "$i" > tem_file
        IP=`awk -F ',' '{print $1}' tem_file`
        HOSTNAME=`awk -F ',' '{print $2}' tem_file`
        ### 判定網卡的數量
        ETH=`ssh ${HOSTNAME} /sbin/ifconfig |grep HWaddr|wc -l`

        if [ $ETH == "1" ];then
                sed -i "${line}i IP_ADDRESS${num}:($IP) DOMAIN:($HOSTNAME) MONITOR_TYPE:(0)" ${conf_flie}
        else
                sed -i "${line}i IP_ADDRESS${num}:($IP) DOMAIN:($HOSTNAME) MONITOR_TYPE:(1)" ${conf_flie}
        fi
done
####刪除臨時文件
cd ${D} && rm -rf tem_file

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章