日期:2011-07-12 17:44:00 来源:本站整理
Linux Shell 监控服务状况 自动处理并告诉管理员[服务器安全]
本文“Linux Shell 监控服务状况 自动处理并告诉管理员[服务器安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
由于工作需求 必须保证人家网站7X24小时不中止运行所以写了 下面这个小脚本
其实目前一个网站有N多服务要监控的 比方我这个apache,tomcat.java等 乱七八糟的
监控apache服务器的状况 假如apache服务down了则自动启动服务并邮件短信告诉管理员 绝对实用 实用于监控大部份网络服务 我这里用的是139邮箱 发到邮箱就自动发到手机上了可以换成其他邮箱还想有发短信的功效的话 只能用语音网关了
废话不多说 先把脚本分享出来 但是利用此脚本的前提为
得先把hosts文件在127.0.0.1背面加上一条a.b.com这条记录 作为发送邮件服务器的域名
并且服务器上装有并启用sendmail服务 你的手机也开通139邮箱了不然发不出来的
#!/bin/bash
#检测apache 服务状况 假如关闭则重启服务,记录日记并举行邮件短信告警
#操纵apache 的80来举行监测
web=`netstat -ant | grep 80 | awk '{print $4}' | awk -F : '{print $4}'`
apachelog=/var/log/httpd/service.log
/sbin/service sendmail start
if [ $web = 80 ]
then
echo "httpd is running"
else
echo "the web service alredy restart"
echo "`date` the web service alredy restart" >> $apachelog
/etc/init.d/httpd start
sleep 2
echo `date` httpd aleady restart | /usr/sbin/sendmail -v your telephonenumber@139.com > /dev/null
fi
1. 先看看 web=`netstat -ant | grep 80 | awk '{print $4}' | awk -F : '{print $4}'` 这句什么意思
输入netstat –ant 先看下效果
[root@localhost ~]# netstat -ant | grep 80
tcp 0 0 :::80 :::* LISTEN可以发现 apache 服务用的就是上面这一行的部份 咱们要做的就是把这个80端口给取出来 这里用到一个shell中常用的函数 awk 用法就是
awk -F # ‘{print $4}’ 其实awk就是取值用的 –F 指定按什么来分来字符串 不指定默许为空格 ‘{print $4}’就是把取到的第四个数值输出 这里需求注意print用的是单引号不是反撇号 具体看下这里怎么用的
这里我没有指定脱离符默许为 空格 $4就是取第四个 你可以按空格来分割数下
[root@localhost ~]# netstat -ant | grep 80 | awk '{print $4}'
:::80
一样的到底 把:作为脱离符 取到第4个就行
[root@localhost ~]# netstat -ant | grep 80 | awk '{print $4}' | awk -F : '{print $4}'
80
OK 到这里端口就取出来 看起来是麻烦点 做起来很快的
2 挑选一个地方做日记汇集 这个不用说了看自己情形了 可以指定不存在的空文件 但是目录必须存在 这样会自动在指定的地方成立的
apachelog=/var/log/httpd/service.log
3.判断服务情况能否正常 假如down掉做启动操作并日记记录,邮件短信告诫等
这里先判断端口数能否为80 假如服务down掉 这个$web会为空的 则判断会不成立的 举行到else 部份
#判断80端口能否精确
if [ $web = 80 ]
then
echo "httpd is running"
else
#先输出一条信息奉告目前是什么情形
echo "the web service alredy restart"
#将什么时刻做什么操作等信息输出到指定的日记文件内
echo "`date` the web service alredy restart" >> $apachelog
#履行重启服务操作
/etc/init.d/httpd start
sleep 2
#发送邮件到指定邮箱
echo `date` httpd aleady restart | /usr/sbin/sendmail -v 你的手机号码@139.com > /dev/null
#退出判断
fi
OK 到这里一个监控服务的脚本便可以基本实现了
假如邮件收不到等问题的时刻先履行下mailq 看下邮件行列有没有邮件 日记记录等 假如还是不行 请尝试重启sendmail服务等 操作
此脚本利用于绝大部份服务的监控工作可以很便利的做应急处理 仓促写的 哪位有什么需求加的功效欢送提 关于 sendmail服务这块 有的服务器大概关掉了 背面我会再说不用sendmail也可以实现发送邮件功效的
以上是“Linux Shell 监控服务状况 自动处理并告诉管理员[服务器安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
windows下的近似linux下的grep号令--findstr
linux下mysql链接被防火墙禁止的办理办法
Linux下mysql新建账号及权限设置办法
SUSE Linux下搭建Web服务器
Windows/Linux MySQL忘掉密码重置密码教程
Linux下Apache自动监测重启脚本(智能化程度较高)
linux备份 linux克隆 linux clone
<b>为什么 Linux不需求碎片整理</b>
CentOS6 yum搭建Linux+Nginx+PHP+MYSQL(LNMP)
Linux系统有效防备ARP攻击
Linux下 Memcache的安装和简单管理
笔记本预装linux重装成windows系统
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论