免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 970 | 回复: 0
打印 上一主题 下一主题

监控Linux服务器SHELL服本剖析 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-29 18:15 |只看该作者 |倒序浏览
    同时管理太多Linux服务器,如有提供WEB服务,邮件服务,有FTP文件服务,有数据库服务器,那么如何有效的来管理,是件烦琐的事,我采用一台监控服务器,不停的扫描工作服务器,如果那台服务器,出现故障,自动报警。
更多免费Linux视频
www.boobooke.com
    可以使用MSN消息,也可以采用手机短信,手机短信可以用
www.139.com
的移动邮件功能,使报警信息以邮件方式发送。

    本报警用Shell脚本+php程序,PHP接口程序接收shell脚本传递的信息并进行分析是否发送MSN信息和手机邮件。

  •    WEB服务器监控脚本:
    #!/bin/sh
    LANG=C

    #被监控服务器、端口列表
    server_all_list=(\
    192.168.1.1:80 \
    192.168.1.2:80 \
    192.168.1.3:80 \
    192.168.1.9:80 \
    )

    date=$(date -d "today" +"%Y-%m-%d_%H:%M:%S")#采用HTTP POST方式发送检测信息给接口程序boobooke.php,接口程序负责分析信息,决定是否发送报警MSN消息
    send_msg()
    {
       /usr/bin/curl -m 10 -d menu=http -d date=$date -d ip=$server_ip -d port=$server_port -d status=$status

    http://192.168.3.7/boobooke.php
    }
    server_all_len=${#server_all_list
  • }
    i=0
    while  [ $i -lt $server_all_len ]
    do
       server_ip=$(echo ${server_all_list[$i]} | awk -F ':' '{print $1}')
       server_port=$(echo ${server_all_list[$i]} | awk -F ':' '{print $2}')
         #status:    0,http down    1,http ok    2,http down but ping ok
           if curl -m 10 -G

    [url=http://${server_all_list[$i]}/]http://${server_all_list[$i]}/[/url]
    > /dev/null 2>&1
           then
               status=1
               echo "服务器${server_ip},端口${server_port}能够正常访问!"
           else
               if ping -c 1 $server_ip > /dev/null 2>&1
               then
                   status=2
                   echo "服务器${server_ip},端口${server_port}无法访问,但是能够Ping通!"
               else
                   status=0
                   echo "服务器${server_ip},端口${server_port}无法访问,并且无法Ping通!"
               fi
           fi
    #echo $status
    send_msg
    send_msg
       let i++
    done

    2.    PHP接口程序:

    * 时    间: 2008-10-25
    *********************************************************************
    */
    //-----------------定义发msn函数---------------
    function sendmsn()
    {
    $send_msn = "
    [email=10908105@qq.com";//]10908105@qq.com";//[/email]
    机器人MSN帐号
    $send_msn_password = "boobooke";//机器人MSN密码
    $re_msn = "

    [email=onlyloveyou2005@163.com";//]onlyloveyou2005@163.com";//[/email]
    接收管理员MSN帐号
    global $message;
    error_reporting(E_ALL);
    include('sendMsg.php');
    $sendMsg = new sendMsg();
    $sendMsg->login($send_msn,$send_msn_password);
    $sendMsg->createSession($re_msn);
    $sendMsg->sendMessage(iconv("GBK", "UTF-8", $message), 'Times New Roman', '008000');
    }
    //--------------函数定义结束-------------------

    //HTTP服务器监控   
    if (htmlspecialchars($_POST["menu"]) == "http")      
    {      
        $date = htmlspecialchars($_POST["date"]);      
        $ip = htmlspecialchars($_POST["ip"]);   
        $port = htmlspecialchars($_POST["port"]);   
        $status = htmlspecialchars($_POST["status"]);//状态,0表示无法访问,1表示正常,2表示无法访问但能ping通   
        $message = "WEB服务器监控系统 ※赶星修改※ V1.4\r\n";
        $message = $message . "----------------------------------------\r\n";
        $message = $message . "报警服务器:" . $ip . "\r\n";
        $message = $message . "----------------------------------------\r\n";
        $message = $message . "报警端口:" . $port . "\r\n";
        $message = $message . "----------------------------------------\r\n";
        $message = $message . "报警时间:" . $date . "\r\n";
        $message = $message . "----------------------------------------\r\n";
        $message = $message . "报警内容:\r\n";
        if ($status==0)
            {
                $message = $message . "●无法访问,并且无法ping能,请火速处理~_~";
                $is_send_msn="1";
             }
        if ($status==1)
            {
                $message = $message . "●一切正常";
                $is_send_msn="0";
             }
        if ($status==2)
            {
                $message = $message . "●服务器无法访问,但是能够Ping通";
                $is_send_msn="1";
            }
       
        if ($is_send_msn == "1")
                {
                 sendmsn();//发MSN信息

                 mail(
    13888880000@139.com
    , "机器报警", $message,
    [email=linux@linux.com);//]linux@linux.com);//[/email]
    手机短信功能。   
                }
               else
            {
               echo "★一切正常,无须发送报警MSN消息!\n";
             }
       
    }   
      
    ?>

    发送MSN短消息用了一个PHP类:sendMsg(网上可以下载到),使用该PHP类发消息,必须将发送、接收双方的MSN互加为联系人,发送中文时,先用iconv将字符集转为UTF-8: $sendMsg->sendMessage(iconv("GBK", "UTF-8", $message), 'Times New Roman', '008000');


    在线视频讲解:
    ============================================
    在线观看:
    http://www.boobooke.com/v/bbk1719
    在线观看:
    http://www.boobooke.com/v/bbk1720
    ============================================




    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/81573/showart_1353783.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP