`
macken
  • 浏览: 346873 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux服务器状态检测脚本(Perl & Shell)

阅读更多

最近服务器经常宕机,导致网站无法正常运行,于是写了一个自动检测网站服务器alive状态的脚本,从网上查到了perl和shell两种脚本的实现方式,同时加入了邮件通知的脚本。

Perl采用的是ICMP检测主机,Perl的脚本如下:

 

 

#!/usr/bin/perl -w

use Net::Ping;
use Net::SMTP;
use MIME::Base64;

my @host_array=('192.168.0.10','192.168.0.11');

my $p = Net::Ping->new("icmp");
foreach $host (@host_array)
{
   # print "$host is ";
    unless($p->ping($host,2))
    {
        &sendmail($host." is down",$host." is down");
    }
   # print "\n";
   # print "NOT " unless $p->ping($host, 2);
   # print "reachable.\n";
    sleep(1);
}
sub sendmail(){
        my $mailhost = "smtp server domain"; # the smtp host
        my $mailfrom = 'your email address'; # your email address
        my $mailto='email address you want to send';
        my $subject=$_[0];
        my $text = $_[1];
        $smtp = Net::SMTP->new($mailhost, Hello => 'localhost', Timeout =>120, Debug => 1);
        $smtp->auth('user name','password');

        $smtp->mail($mailfrom);
        $smtp->to($mailto);
        $smtp->data();
        $smtp->datasend("Content-Type:text/html;charset=utf-8\n");
        $smtp->datasend("Content-Transfer-Encoding:base64\n");
        $smtp->datasend("To:=?utf-8?B?".encode_base64($mailto,'')."?= <$mailto> \n");
        $smtp->datasend("From:=?utf-8?B?".encode_base64($mailfrom,'')."?= <$mailfrom> \n");
        $smtp->datasend("Subject:=?utf-8?B?".encode_base64($subject,'')."?=\n\n");
        $smtp->datasend("\n");
        $smtp->datasend(encode_base64($text,'')." \n");
        $smtp->dataend();
}
$p->close();

 

 Shell的脚本通过ping检测主机状态,贴一下网友的代码吧

 

#!/bin/sh
pingcmd()
{
prefix="SERVER $1 PING $2"
ping -w 1 -c 1 $2>/dev/null
ret=$?
if [ $ret -eq 0 ]
then printf "$prefix\t OK\n"
else printf "$prefix\t ERROR\n"
fi
return 0
}

echo "---------------------------------------"
echo "核心网1 1.1     PING FROM 1"
echo "---------------------------------------"
server0="182.87.1.3"
server1="182.87.1.2"

pingcmd $server0 $server1

echo ""

 

 可以通过加入相应的通知类库,如飞信的开源接口,做到即时报警通知。

 

参考资料:

http://blogold.chinaunix.net/u/25264/showart_1360067.html

http://bbsea123.blog.163.com/blog/static/722651472010126111454814/

 

0
0
分享到:
评论

相关推荐

    如何使用Linux的Shell脚本维护Oracle

    【如何使用Linux的Shell脚本维护Oracle】 在Linux环境中,Oracle数据库的管理和维护可以通过编写Shell脚本来实现自动化和效率提升。Shell脚本是Linux系统中的一种强大工具,它允许用户编写一系列命令,形成一个可...

    Linux下的Perl编程

    此外,Perl与shell脚本的集成使得在脚本中调用shell命令变得简单,增强了其灵活性。 Perl的强大之处在于其丰富的模块库。CPAN(Comprehensive Perl Archive Network)提供了成千上万的模块,涵盖了从网络编程到...

    掌握Linux Shell脚本:Zsh与Bash的高级应用

    Linux是一个开源的操作系统,广泛用于服务器、桌面计算机、移动设备以及嵌入式系统等多种平台。以下是Linux开发可能包含的几个...6. **脚本编程**:使用Shell脚本或Python等在Linux上进行自动化脚本编程,以实现任务

    Unix_Linux脚本编程_ perl部分.doc

    Unix/Linux 系统中,Perl 是一种强大的脚本编程语言,由 Larry Wall 创建,主要用于文本处理、报告生成以及自动化任务。Perl 结合了 C、C++、shell 和其他语言的特性,使其成为一种灵活且功能丰富的工具。Perl 5 是...

    autosnort脚本的回购协议。_Shell_Perl_下载.zip

    _Shell_Perl_下载.zip”文件可能包含了一个用Shell或Perl语言编写的脚本,用于自动配置和安装autosnort到Linux系统上。下面我们将详细讨论autosnort、Snort以及相关的配置和安装过程。 **autosnort** Autosnort是...

    Linux下实现SNMP一键安装的Shell脚本

    这个Shell脚本的主要优点在于自动化了SNMP的安装过程,节省了手动操作的时间,尤其对于需要在多台服务器上部署SNMP的情况,大大提高了效率。用户只需提供必要的版本和认证信息,脚本将自动处理依赖安装和SNMP配置,...

    Linux下的PERL编程.rar

    5. **Perl与shell的结合**:在Linux环境下,懂得如何调用shell命令,与Perl程序交互,可以实现更复杂的任务自动化。 此外,为了在Linux下高效地开发Perl程序,你还需要了解: 1. **编辑器/IDE**:如Vim、Emacs或...

    LINUX与UNIX SHELL编程指南(高清中文版)

    此外,书中还探讨了Shell脚本如何与其他编程语言(如Perl、Python和awk)进行交互,这种方式可以极大地增强脚本的功能和性能。 为了让读者对Shell编程有更全面的认识,本书还提供了关于Shell编程库、Shell函数库和...

    Linux面试专题,linux面试题目,Perl

    在IT行业中,Linux操作系统是许多专业程序员和系统管理员的基础工具,尤其对于服务器管理和软件开发而言。Linux面试专题通常会涵盖广泛的知识点,包括系统管理、命令行操作、文件系统、进程管理、网络配置、安全控制...

    Perl-Tutorial

    Perl与Bash(Bourne-Again SHell)和Shell脚本在某些方面有相似之处,都是用于系统管理任务和自动化。然而,Perl提供了更丰富的语法和更强的编程特性,比如面向对象编程、异常处理等。Bash和Shell脚本则更注重命令行...

    linux-ReverseShellasaService反弹shell即服务

    4. **脚本语言**:Python、Perl、Bash等脚本语言常被用于创建反弹shell,因为它们灵活且易于编写。 5. **Payload生成**:攻击者可能需要生成特定的shellcode或利用,以在目标系统上创建反弹shell。这可能涉及到对二...

    Linux JSON 命令总结.zip_json linux_shell解析json

    在Linux环境中,处理JSON数据是常见的任务,尤其是在服务器管理和自动化脚本中。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。本文将深入探讨如何...

    Linux Shell编程

    在深入探讨Linux Shell编程之前,我们首先需要理解什么是Linux以及Shell。Linux是一种开源的操作系统,它的内核由林纳斯·托瓦兹开发,提供了一个稳定、高效且灵活的平台,适用于各种用途,从服务器到个人计算机,再...

    perl linux xmanager

    在Linux环境中,Perl被广泛用于系统管理任务,例如编写shell脚本、自动化运维任务、系统监控等。通过Perl,你可以编写出高效、可读性强的程序,实现对系统状态的检查、文件系统的操作、网络通信等功能。 接下来,...

    lamp(Linux+Apache+Mysql+Perl/PHP/Python)论文

    此外,Linux 提供了 shell,如 Bash,作为命令行解释器,同时也是一种简单的编程语言,用户可以编写脚本来自动化任务。Linux 系统中还包含大量实用工具,如文本编辑器、文件管理工具等,满足用户的各种需求。Linux ...

    Linux与Unix Shell 编程指南

    Shell作为Linux和Unix系统中的命令解释器,是用户与操作系统交互的主要接口,同时也是编写自动化脚本的重要工具。本指南旨在帮助读者掌握Shell脚本的编写技巧,提升在系统管理、任务自动化和软件开发中的效率。 ...

    perl for linux 下的安装.pdf

    ### Perl在Linux下的安装指南及步骤详解 #### 一、引言 Perl是一种广泛应用于系统管理、网络编程、Web开发等领域的脚本语言。对于Linux系统而言,Perl不仅能够简化许多复杂的任务,还能提高开发效率。本文将详细...

    Linux Shell 编程 入门、提高、精通

    Linux Shell 编程是Linux系统中自动化脚本编写和执行的基础,它允许用户通过一系列命令来完成复杂的任务。本文将基于给定文件信息,对Linux Shell编程的入门、提高、精通所需掌握的知识点进行详细阐述。 **第一部分...

    Linux Oracle12c静默安装脚本

    6. 脚本编程:使用Shell或Perl等脚本语言,编写自动化安装逻辑。 总之,"Linux Oracle12c静默安装脚本"是一项技术含量高且重要的任务,它需要深入理解Linux操作系统和Oracle数据库的特性。通过编写和执行这样的脚本...

Global site tag (gtag.js) - Google Analytics