[工作内容]
老大的需求,对指定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);

本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/184423,如需转载请自行联系原作者

nagios扩展开发之check_ping相关推荐

  1. 苹果开发之Cocoa编程(原书第4版)

    <苹果开发之Cocoa编程(原书第4版)> 基本信息 原书名:Cocoa Programming for Mac OS X: Fourth Edition 作者: (美)希莱加斯(Hill ...

  2. Flutter开发之AlertDialog、AboutDialog对话框组件-2(41)

    继上一篇介绍了SimpleDialog对话框组件 Flutter开发之SimpleDialog对话框组件-1(40) 这里再介绍一种带有确定.取消按钮的对话框组件:AlertDialog.AboutD ...

  3. Android NDK开发之 NEON基础介绍

    原文:http://blog.csdn.net/app_12062011/article/details/50434259 Android NDK开发之 NEON基础介绍 这是官方介绍: http:/ ...

  4. 安卓开发之Handler、HandlerThread学习篇

    安卓开发之Handler.HandlerThread学习心得篇           开篇说明:本文采用的都是最基础最简单的例子,目的只有一个:希望大家将学习的焦点放在Handler的理解和使用上,我不 ...

  5. Android开发之旅:android架构

    引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我 们对android有了个大致的了解,知道如何搭建and ...

  6. 从全职高手开始的系统_动画全职高手第二季热血回归,腾讯视频的国漫IP全链路开发之道...

    这个国庆档,国产动画在内容市场上的存在感比想象中更加有分量.电影市场上,动画IP电影<姜子牙>完成票房领跑,掀起观影热潮:动画番剧市场上,头部IP动画<全职高手>第二季时隔三年 ...

  7. ArcGIS Engine开发之旅02--ArcGIS Engine中的类库

    原文 ArcGIS Engine开发之旅02--ArcGIS Engine中的类库 System类库 System类库是ArcGIS体系结构中最底层的类库.System类库包含给构成ArcGIS的其他 ...

  8. 开发中的“软”与“硬”:高画质移动游戏开发之道

    摘要:游戏的效果不仅与游戏引擎的渲染相关,与硬件优化也有千丝万缕的联系.一款基于芯片优化的移动游戏界面,甚至可以堪比视频游戏的视觉效果.高通半导体事业部资深经理刘晓光从软硬件两个层面分享了移动游戏开发 ...

  9. 移动web开发之rem布局(rem基础、媒体查询、 less 基础、rem适配方案)

    移动web开发之rem布局 一.rem基础 rem单位 rem (root em)是一个相对单位,类似于em,em是父元素字体大小. 不同的是rem的基准是相对于html元素的字体大小. 比如,根元素 ...

  10. ArcGIS Engine开发之旅08--和查询相关的对象和接口

    ArcGIS Engine开发之旅08--和查询相关的对象和接口 原文:ArcGIS Engine开发之旅08--和查询相关的对象和接口 查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性 ...

最新文章

  1. 【Qt】Qt再学习(八):Media Player(Qt实现多媒体播放器)
  2. python——元素列表基础
  3. Python 调用matplotlib模块绘制柱状图
  4. 深入理解JVM读书笔记--内存管理
  5. pytorch加载预训练 加载部分参数
  6. python学习(三)--跟着例子写的贴吧网页爬取
  7. C#正则表达式判断输入的是不是数字
  8. Webkit推出新的着色语言whlsl
  9. oracle数据库索引
  10. Atitit table的类型 表类型目录1. 元数据表 日志表 12. 按照文件结构分为堆组织表(HOT)和索引组织表(IOT) 13. 内存表和文件存储表q 24. 全局表 2
  11. 安卓手机超频CPU(无修饰CPU控制)
  12. 新巴塞尔资本协议(中英文)
  13. IDEA相对路径系统找不到指定的文件问题
  14. 回头草的爱情,我们还需要吗?
  15. opencv中findContours 和drawContours画图函数
  16. 用c语言统计给定的n个数中,负数、零和正数的个数。
  17. 小米手机 开发app python_python 全栈开发,Day59(小米商城)
  18. Linux 修改用户名(同时修改用户组名和家目录)
  19. 中科院回应“木兰”套壳争议:当事人5年不得晋升,取消3年科研项目申请资格
  20. Pspice17.2绘制原理图

热门文章

  1. awk --- 常用技巧
  2. cocos2d-Lua视频教程
  3. 一个事务复制的bug--更新丢失 续
  4. 利用正则表达式 替换字符串中多个 URL
  5. 809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。...
  6. HTTP-meta标签
  7. 路径的形式不合法解决方案
  8. python可迭代对象和迭代器的理解
  9. 我们聊聊快排吧...
  10. 详解Android核心模块及相关技术