用shell脚本定时发短信监控linux系统的运行壮况

作者:网络医生 发布于:2012-4-21 20:36 Saturday 分类:shell

1、很多时候我们不想登录linux系统就想随时随地的了解系统的运行壮况,我们可以写一个脚本定时执行后往手机发一条短信来通知linux系统的运行壮况。

2、脚本内容如下(从我自己的服务器上粘下来的):

vi  send.sh

############Begin################

#!/bin/bash
#清空前一次的记录
echo "" > ~/send.txt
echo "Now total on line IP:" >> ~/send.txt
#统计出有多少人线访问
/bin/netstat -ant | grep ESTABLISHED |wc -l >> ~/send.txt
#统计内存使用了多少
echo "Total memory:" >> ~/send.txt
free -m|grep Mem|awk '{print $2}' >> ~/send.txt
echo "Used memory:" >> ~/send.txt
free -m|grep Mem|awk '{print $3}' >> ~/send.txt
#统计出前一天总访问IP数:
echo "Yesterday total access IP:" >> ~/send.txt
find /home/webserver/httpd2.2.14/logs/backup_logs -type f -mtime 1 -exec awk -F "-" '{print $1}' {} \;|sort|uniq|wc -l >> ~/send.txt
cat ~/send.txt | mail -s "blog_server_info" 1384909****@139.com

############END###################

3、在cron里设置定时执行,例:

每天上午11:35执行:  35 11 * * * /root/send.sh

4、设置Linux服务器的名称 hostname  num123.com,这样设置后邮箱收到邮件时发件人的地址就是root@num123.com

如果不设置的话发件人的地址格式不正确,怪怪的,这样很多邮件服务器就会拒绝接收这样的邮箱,从面导致发送了但接收不到的现象。

注意:

1、思路很简单,就是用脚本统计出需要的数据,然后写到send.txt文件里面,再用mail命令把send.txt内容发到邮箱里面。这里使用的是移动139邮箱,139邮箱可以收到邮件后免费转发到手机上面。

2、linux系统必须安装sendmail,如果没有安装使用yum install sendmail 即可

3、解释一下,下面这行的意思:

find /home/webserver/httpd2.2.14/logs/backup_logs -type f -mtime -1 -exec awk -F "-" '{print $1}' {} \;|sort|uniq|wc -l >> ~/send.txt

先用find命令找出前一天的日志,用awk列出所有的IP,sort对IP进行归类排序,uniq去掉重复的IP,wc -l 统计出IP总数。

 

标签: linux shell sort uniq 监控 短信

发表评论:

  • 3
  • 6
  • 7
  • 0
  • 4

Powered by emlog