如果管理的站點和服務(wù)器較多的情況下,每次修改配置文件都相當(dāng)痛苦。因而想到了用shell腳本來批量生成配置文件和配置數(shù)據(jù)。下面這個腳本是為了批量生成nagios監(jiān)控配置文件的一個shell腳本程序。其原理是事先定義一個shell腳本模板,然后每個需要監(jiān)控的站點復(fù)制一份模板替換掉模板文件里面的變量。
1、準(zhǔn)備模板文件webcheck.template
more webcheck.template
###################WEBURL define start###################
define service{
use generic-service ; Name of service template to use
host_name webcheck
service_description WEBURL
check_command check_webpage!-H WEBURL -u INDEX
is_volatile 0
max_check_attempts 3
check_interval 1
retry_interval 1
check_period 24x7
notification_interval 5
notification_period 24x7
notification_options w,u,r,c
contact_groups admins
}
###################WEBURL define end###################
變量為WEBURL和INDEX
2、站點列表文件weblist.txt
復(fù)制代碼 代碼如下:
www.aaa.com \\/
bbs.bbb.com \\/
www.ccc.com \\/
weblist.txt有兩個field,第一個field為域名,第二個field為站點對應(yīng)的url。如第一個域名為www.aaa.com/
3、批量生成腳本文件create.sh
[root@bogon webcheckes]# more create.sh
#!/bin/bash
PATH=/bin:$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
export PATH
#echo $PATH
usage () {
echo -en "USAGE: $0 [web list] or $0 [template] [web list]\nFor example: $0 host.template host.list(Field : [WEB URL] [INDEX WEB PAGE])\n" 1>2
exit 1
}
if [ $# -gt 2 ];then
usage
exit 1
fi
case "$#" in
2)
template=$1
host_list=$2
;;
1)
template='webcheck.template'
host_list=$1
;;
0)
# template='webcheck.template'
# host_list='host.list'
usage
;;
esac
if [ ! -f "${template}" ];then
echo "template : ${template} not exist!" 1>2
exit 1
fi
if [ ! -f "${host_list}" ];then
echo "host list : ${host_list} not exist!" 1>2
exit 1
fi
#echo $PWD/${host_list}
WEBTEMP="wcalltemp.txt"
rm $PWD/${WEBTEMP}
#cat $PWD/${host_list}
/bin/cat $PWD/${host_list}|
while read weburl index
do
#echo "${ip}"|grep -oP '^\d{1,3}(\.\d{1,3}){3}$' >/dev/null 2>1 || Field='not ip'
#if [ "${Field}" = 'not ip' ];then
# echo "${ip} not ip!" 1>2
# exit 1
#fi
#host_cfg="${hostname}-${ip}.cfg"
tmppage="webtemp.txt"
cp ${template} ${tmppage}
sed -i "s/WEBURL/${weburl}/g;s/INDEX/${index}/g" ${tmppage}
/bin/cat ${tmppage}>>${WEBTEMP}
done
/bin/cat webcheck_org.template>webcheck_${host_list}.cfg
/bin/cat ${WEBTEMP}>>webcheck_${host_list}.cfg
rm $PWD/${WEBTEMP}
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
service nagios restart
起作用的主要是這句,sed -i "s/WEBURL/${weburl}/g;s/INDEX/${index}/g" ${tmppage},說到底是sed命令的功勞。將weblist.txt里面的內(nèi)容替換掉模板里的WEBURL和INDEX變量。
4、調(diào)用方式
復(fù)制代碼 代碼如下:
sh ./create.sh webcheck.template weblist.txt
或者
復(fù)制代碼 代碼如下:
sh ./create.sh weblist.txt
如果存在大量需要手工修改配置文件的情況下,或者批量生成一些類似的文件時可以考慮采用此種方式。
您可能感興趣的文章:- Shell腳本實現(xiàn)批量替換文件內(nèi)容
- 使用Linux shell腳本實現(xiàn)FTP定時執(zhí)行批量下載指定文件
- Shell腳本批量修改文件后綴名代碼分享
- Shell腳本批量重命名文件后綴的3種實現(xiàn)
- shell腳本中使用iconv實現(xiàn)批量文件轉(zhuǎn)碼的代碼分享
- Shell腳本遍歷目錄并批量修改文件編碼
- linux下采用shell腳本實現(xiàn)批量為指定文件夾下圖片添加水印的方法
- 使用iconv批量改變文件編碼的shell腳本
- 批量轉(zhuǎn)換目錄下文件編碼的shell腳本代碼
- Shell腳本之文件批量創(chuàng)建與修改的簡單方法