当前位置: 首页 > news >正文

nagios扩展开发之check_ping

[工作内容]
老大的需求,对指定IP进行ping,当到达一定的阀值,如50ms,那么就cirtical,并且对其进行一次tracertroute,我们都知道对前面的需求,很好解决,那就是check_ping这个插件就能解决,但它还无法满足后面的需求,咋办?只有自己开发了,好了,那就干吧!~
[过程]
commands.cfg
define command{
        command_name    check_ping_dev
        command_line    $USER1$/check_ping_dev $HOSTADDRESS$  $ARG1$  $ARG2$  10
        }
services.cfg
define service  {
        name                    mrtg-services-init
        service_description     ping
        check_command           check_ping_dev!50,50%!50,50%
        check_period            24x7
        max_check_attempts      2
        normal_check_interval   5
        retry_check_interval    2
        contact_groups          sagroup
        notification_interval   5
        notification_period     24x7
        notification_options    w,u,c,r
        register                   0
}
define service {
        use                     mrtg-services-init
        host_name               M-x.x.x.x,M-y.y.y.y
}
那么现在开发check_ping_dev

#!/usr/bin/perl

$USR1="/usr/local/nagios/libexec";
$ARG1=$ARGV[0];
$ARG2=$ARGV[1];
$ARG3=$ARGV[2];
$ARG4=$ARGV[3];

$result = `$USR1/check_ping -H $ARG1 -w $ARG2 -c $ARG3 -p $ARG4`;
@results=split(" ",$result);
if( grep(/CRITICAL/,@results) ){
       printf($result);
       print "\n";
       `$USR1/save_log $ARG1`;
       exit 2;
}
else{
    printf($result);
    print "\n";
    exit 0;
}

save_log的作用就是记录tracert

#!/usr/bin/perl
use POSIX qw(strftime);

$dtime = strftime "%Y%m%d %H:%M:%S", localtime(time());

$SAVE_PATH="/tmp";
$RAG1=$ARGV[0];

$result=`/bin/traceroute $RAG1`;
open("FH",">>$SAVE_PATH/$RAG1");
    print FH $dtime."\n";
    print FH $result."\n"; 
close(FH);

好了,满足公司的需求,解决问题!~

开始搞python。。。

相关文章:

  • 基于Web-Harvest精确采集互联网的数据
  • Linux下基于密钥的安全验证实现方法
  • 类似百度Google的搜索
  • 世界上最神秘的部门
  • 远程mysql权限
  • 什么行业最有前途 教你如何在IT业拿高薪!
  • linux引导时输入特殊信息的含义
  • CCNA工作指南~
  • 60道Unix试题检验你的水平
  • 通过样式调整input 中password text默认长度
  • 图解入侵过程,黑客未来!
  • django传递嵌套对象给flex前端的方法(原创)
  • 强大的DataGrid组件[8]_内嵌ComboBox动态数据联动——Silverlight学习笔记[16]
  • 在 Ubuntu 下如何用 Mplayer 看影片
  • Java网络编程从入门到精通(33):非阻塞I/O的缓冲区(Buffer)
  • 《Java编程思想》读书笔记-对象导论
  • 【知识碎片】第三方登录弹窗效果
  • create-react-app做的留言板
  • ECS应用管理最佳实践
  • ES2017异步函数现已正式可用
  • JAVA之继承和多态
  • JS变量作用域
  • JS函数式编程 数组部分风格 ES6版
  • Python利用正则抓取网页内容保存到本地
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Vue--数据传输
  • 复习Javascript专题(四):js中的深浅拷贝
  • 如何编写一个可升级的智能合约
  • 入门到放弃node系列之Hello Word篇
  • 实现简单的正则表达式引擎
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • nb
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​如何防止网络攻击?
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #define用法
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #每天一道面试题# 什么是MySQL的回表查询
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (30)数组元素和与数字和的绝对差
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (七)c52学习之旅-中断
  • (七)Java对象在Hibernate持久化层的状态
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)Unity3DUnity3D在android下调试
  • (转载)Google Chrome调试JS
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET 反射的使用
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET导入Excel数据