?因工作量太大,所以写了一个脚本完成自动化工作。工作内容是,在crontab中内容如下:
?
- */1?*?*?*?*?/home/nagios/nsca/nagios_check_ping.sh 192.168.1.1?>/dev/null?2>&1?
现在改为
?
- */1?*?*?*?*?/home/nagios/nsca/nagios_check_ping.sh?192.168.1.1?mobile?>/dev/null?2>&1?
要完成自动插入mobile的工作,crontab 的条目太多,不可能手工去插入。所以我的代码如下:
- #!/usr/bin/perl?-w??
- ?
- use?strict;?
- ?
- my?$crontab?=?"crontab.txt";?
- #?保存?crontab?到?crontab.txt?中?
- ?
- my?$result??=?`crontab??-l?>?$crontab`;?
- ?
- ?
- open?OUT,">?crontab2.txt"?||?die?"Cann't?open?the?file!?$!";?
- open?IN,"<?$crontab"?||?die?"Cann't?open?the?file!?$!";?
- ?
- ?
- my?$flag?=?1;?
- my?$count??;?
- while(<IN>){?
- ????????$count++;?
- ????????my?$line?=?$_;?
- ????????chomp?$line;?
- ????????open?MO,"<?mobile.txt"?||?die?"Cann't?open?the?file!?$!";?
- ????????while(<MO>)?{?
- ????????????????my?$ip_mobile?=?$_;?
- ????????????????chomp?$ip_mobile;?
- ????????????????my?@ip?=?split?/s+/,$ip_mobile;?
- ????????????????if?(?$line?=~?/$ip[0]/?){?
- ????????????????????????my?@temp??=?split?/s+/,$line;?
- ????????????????????????print??OUT?"?*/1?*?*?*?*?$temp[5]?$ip_mobile?>/dev/null?2>&1?n";?
- ????????????????????????$flag?=?1;?
- ????????????????????????last;?
- ????????????????}else?{?$flag?=?0;}?
- ????????}?
- ????????if($flag?==?0?){?
- ????????????????print?OUT?"$line?n";?
- ????????}?
- ????????$flag?=?1;?
- close?MO;?
- }?
- close?IN;?
- close?OUT;??
?
今天工作太累了,就不解释代码了。