博客统计信息

用户名:yeelone
文章数:77
评论数:53
访问量:37265
无忧币:1090
博客积分:930
博客等级:4
注册日期:2010-04-14

编写perl 脚本完成文本 字符串插入工作
2012-02-06 22:57:42
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yeelone.blog.51cto.com/1476571/773611

 因工作量太大,所以写了一个脚本完成自动化工作。工作内容是,在crontab中内容如下:

 

  1. */1 * * * * /home/nagios/nsca/nagios_check_ping.sh 192.168.1.1 >/dev/null 2>&1 

现在改为

 

  1. */1 * * * * /home/nagios/nsca/nagios_check_ping.sh 192.168.1.1 mobile >/dev/null 2>&1 

要完成自动插入mobile的工作,crontab 的条目太多,不可能手工去插入。所以我的代码如下:

  1. #!/usr/bin/perl -w  
  2.  
  3. use strict; 
  4.  
  5. my $crontab = "crontab.txt"
  6. # 保存 crontab 到 crontab.txt 中 
  7.  
  8. my $result  = `crontab  -l > $crontab`; 
  9.  
  10.  
  11. open OUT,"> crontab2.txt" || die "Cann't open the file! $!"; 

  12. open IN,"< $crontab" || die "Cann't open the file! $!"; 
  13.  
  14.  
  15. my $flag = 1
  16. my $count  ; 
  17. while(<IN>){ 
  18.         $count++; 
  19.         my $line = $_; 
  20.         chomp $line; 
  21.         open MO,"< mobile.txt" || die "Cann't open the file! $!"; 
  22.         while(<MO>) { 
  23.                 my $ip_mobile = $_; 
  24.                 chomp $ip_mobile; 
  25.                 my @ip = split /\s+/,$ip_mobile; 
  26.                 if ( $line =~ /$ip[0]/ ){ 
  27.                         my @temp  = split /\s+/,$line; 
  28.                         print  OUT " */1 * * * * $temp[5] $ip_mobile >/dev/null 2>&1 \n"; 
  29.                         $flag = 1
  30.                         last; 
  31.                 }else { $flag = 0;} 
  32.         } 
  33.         if($flag == 0 ){ 
  34.                 print OUT "$line \n"; 
  35.         } 
  36.         $flag = 1
  37. close MO; 
  38. close IN; 
  39. close OUT;  

 

今天工作太累了,就不解释代码了。

本文出自 “YEELONⒼ ” 博客,请务必保留此出处http://yeelone.blog.51cto.com/1476571/773611

分享至
更多
一键收藏,随时查看,分享好友!
0人
了这篇文章
类别:运维技术圈()┆阅读()┆评论() ┆ 推送到技术圈返回首页

文章评论

 
 

发表评论            

【技术门诊】专家解析:软考重点难点及应试技巧
昵  称:
登录  快速注册
验证码:

请点击后输入验证码博客过2级,无需填写验证码

内  容: