设为首页 收藏本站
查看: 1876|回复: 0

[经验分享] 网络alive主机存活捕捉 三 (完,生成smokeping配置)

[复制链接]

尚未签到

发表于 2019-1-17 11:26:33 | 显示全部楼层 |阅读模式

  • #!/usr/bin/perl
  • sub get_ip_array{
  • $filename="$_[0]";
  • open "file","$filename";
  • my @nets;
  • foreach $file_line (){
  •     if ($file_line=~ /href=\'ip_(.*).htm/){
  •         $file_line_net = $1;
  •         push (@nets,$file_line_net);
  •     }
  •     else{
  •         next;
  •     }
  • }
  • return @nets;
  • }

  • # 函数,让数组 清楚一些
  • sub let_array_clear{
  •     my @array = @_;
  •     my @new_array;
  •     my @new_array_numbers;
  •     my $ifsame = 0;
  •     foreach $array (@array) {
  •         #默认将 老数组中的每个值跟 新数组中的任一个值都不一样
  •         $ifsame=0;
  •         # 查询新数组序列中的每个值
  •         foreach $new_array (@new_array){
  •             #将新数组中的一个值 按照 小数点进行 分隔成4块
  •             @new_array_numbers = split("\\.",$new_array);
  •             #将老数组中的一个值 按照 小数点进行 分隔成4块
  •             @array_numbers = split("\\.",$array);
  •             #判断数组4块中的前三块儿是否相同
  •             if ( $new_array_numbers[0] eq $array_numbers[0] and $new_array_numbers[1] eq $array_numbers[1] and $new_array_numbers[2] eq $array_numbers[2]){
  •                 #如果相同,那么就将是否相同 设置为1
  •                 #print "发现相同!";
  •                 $ifsame = 1;
  •             }
  •         }
  •         # 比对完成后,对结果 ifsame 进行判断,如果相同,就进行下次循环,否则, 进行push操作
  •         if ($ifsame == 1) {
  •             next;
  •         }

  •         elsif ($ifsame == 0) {
  •             $new_array = $array;
  •             push (@new_array,$new_array);
  •         }
  •     }
  •     return @new_array;
  • }

  • use DBI;
  • use DBD::mysql;
  • my $dbh = DBI -> connect("DBI:mysql:db_iplocate;host=127.0.0.1", "admin","admin",{RaiseError=>1});
  • my $sth = $dbh->prepare( q{select city_cn,city_en from `gps`}) or die("Cannot prepare statement:", $dbh->errstr(),"\n");
  • my $rc = $sth->execute() or die("Cannot execute statement:", $sth->errstr(), "\n");

  • my @city_cn;
  • my @city_en;
  • # 将从mysql得到的city_cn和city_en放到相应的数组中
  • while (my @row = $sth -> fetchrow_array()){
  •     push @city_cn,$row[0];
  •     push @city_en,$row[1];
  • }

  • my @isps_cn = ("移动","联通","电信");
  • my @isps_en = ("ChinaMobile","ChinaUnicom","ChinaTelecom");
  • foreach $i(0..(@city_cn-1)){
  •     # 打印smokeping第一栏
  •     print "+ $city_en[$i]\n";
  •     print "menu = $city_en[$i]\n";
  •     print "title = $city_en[$i]\n";
  •     # 对运营商进行循环
  •     foreach $j(0..2) {
  •         # 组合出文件名称        
  •         $file_name = "$city_en[$i]" . "_" . "$isps_en[$j]";
  •         #print "正在处理 $file_name\n";
  •         # 打开 snmp 扫描的结果  
  •         open "file_nmap_result","./result_nmap/$file_name";
  •         # 初始化数组 file_nmap_result_usageips
  •         my @file_nmap_result_usageips="";
  •         # 处理文件的每一行,处理完成后吐出一个有效ip的数组
  •         foreach $file_nmap_result_line (){
  •            # 如果开头是Host,那么就是我们要找的行
  •            if ( $file_nmap_result_line =~ m/^Host/ ){
  •                # 将行进行 分隔 按照 空格
  •                @file_nmap_result_line_columns = split(" ","$file_nmap_result_line");
  •                # ip地址在 第二列,对 ip地址按照小数点进行分隔
  •                @file_nmap_result_usageips_numbers = split("\\.",$file_nmap_result_line_columns[1]);
  •                # 对 ip地址的 小数点最后一个数字进行判断, 如果是0 或者255 就不再对此行进行处理
  •                if ($file_nmap_result_usageips_numbers[3] eq 0 || $file_nmap_result_usgaeips_number[3] eq 255 ){
  •                    next;
  •                }
  •                else{
  •                    push(@file_nmap_result_usageips,$file_nmap_result_line_columns[1]);
  •                }
  •            }
  •            else{
  •                next;
  •            }
  •         }  
  •         # 对 得到的数组进行清洗, 按照小数点分隔, 前三位相同的话,只保留一个
  •         @file_nmap_result_usageips_clear = &let_array_clear(@file_nmap_result_usageips);
  •         # 对得出的有效ip数组进行处理,得出sokeping可以使用的配置文件;
  •         my $usage_ip_number = 0;
  •         foreach $file_nmap_result_usageip (@file_nmap_result_usageips_clear){
  •             if ($usage_ip_number eq 0){
  •                 $usage_ip_number++;
  •                 next;
  •             }
  •             print "++ $isps_en[$j]_$usage_ip_number\n";
  •             print "menu = $isps_en[$j]$usage_ip_number\n";
  •             print "title = $isps_en[$j]$usage_ip_number\n";
  •             print "host = $file_nmap_result_usageip\n";
  •             $usage_ip_number++;
  •         }
  •         close("file_nmap_result");
  •         #print "处理$file_name......Complete!\n";
  •     }
  • }

  • warn($DBI::errstr) if $DBI::err;
  • $dbh->disconnect();
  • $sth->finish();



附件:http://down.运维网.com/data/2359394


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-664354-1-1.html 上篇帖子: smokeping之图表理解 下篇帖子: centos5.6下smokeping2.6.6的详细安装步骤
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表