利用linux脚本编写监控程序
项目背景:
#1、 实现对cpu、内存、磁盘的监控,当cpu持续5分钟消耗超过50%,内存消耗超过80%,磁盘主区不足10G时报警
#2、 实现对特定服务器网络的侦控,当发现该机器不能访问到目标服务器是,报警
#3、 每天定时早上8:00,下午5:00发送一封实时运行状态到指定收件人。
#4、 报警采用连发三封邮件,每封邮件间隔1分钟。
首先,在ubuntu系统中配置邮件客户端
1、 使用mutt+msmtp做linux邮件客户端
帖子2是对帖子1(开发相关:如果想找个监控脚本参考,可以看这个帖子)的补充,网上的东西就是这样,缺胳膊少腿…. ….
http://down.chinaz.com/server/201202/1678_1.htm帖子1
http://hi.baidu.com/ccie6554763/blog/item/2598e615a8eab266cb80c4e4.html帖子2
其实就是这个,qq.com前面要加smtp
配置QQ邮箱,如果你测试是用这种邮箱的话,那么,蛋疼了,要增加这个操作~
http://os.51cto.com/art/201102/245288.htm 附录2
2、基于Evolution 貌似twin有过同名唱片,百度一搜,都是那些,晕死,还没有用命令行操作这个软件的相关信息;
具体配置参考以下两个帖子,为什么是两个,看了你就知道~
http://os.51cto.com/art/-000111/245284.htm 附录1
http://os.51cto.com/art/201102/245288.htm 附录2
详细配置过程见附录1
3、mail 命令,不过不知怎么用,
然后,就开始编写我们伟大的脚本,机器的灵魂,呵呵我们也 算得上是灵魂的工程师呵呵~
Shell脚本的一些常用表达方式的格式写法以及注意点
程序无非就是处理数据,一种语言也无非就是要知晓如何定义,如何引用,格式怎么写,可以怎么写
首先是定义变量
直接用,建议用大写
COUNTER=1 记得等于号要接在变量名之后 但是在if语句的[]以及echo时却不能,很蛋疼~
$COUNTER 表示他的大小
接着,我们要知道怎么打印信息,每入手一种硬件或是一门语言,都要首先知道这个,
echo $ COUNTER 终端就打印出这个值
echo “ $ COUNTER” 这样写更规范~
如果是字符串 那么echo “ hello world “ “”这个要在英文下,记住
如果是变量加字符串呢 够变态的想法
echo “你好 $ COUNTER” 这样就可以了
判断吧
if[ $A –eq $b ] -eq 等于 成立执行 then 否则else 如果是在命令行中执行 [ $A –eq $b ]
echo $? 返回为0,成立为0 ,不懂~
then
else 可以省略
fi
如果是变量与数字呢
if[ $A –eq 1 ]
如果是联立的条件呢
if[ $hour -eq 8 ] || [ $hour -eq 17 ]&& [ $min -eq 0 ] && [ $sec -eq 0 ]
变量解决了,接下来就是函数
写法和C一样,只是不能先申明后条用,因为脚本是一句一句执行的
如何提取信息
1. 命令法
2. 文件缓存法
如何将获取的信息写进变量,因为要去判断嘛~
详细过程:
下载MSMTP
wgethttp://nchc.dl.sourceforge.net/sourceforge/msmtp/msmtp-1.4.17.tar.bz2
tar xvf msmtp-1.4.17.tar.bz2
cd msmtp-1.4.17
./configure --prefix=/usr/local/msmtp
make
make install
2、创建msmtp配置文件和日志文件(host为邮件域名,邮件用户名test,密码123456)
# vim ~/.msmtprc
account default
host 126.com
from test@126.com
auth login
user test
password 123456
logfile ~/.msmtp.log
# chmod 600 ~/.msmtprc
# touch ~/.msmtp.log
3、mutt安装配置:(一般linux下有默认安装mutt)
set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set realname="memory"
set from=test@126.com
set envelope_from=yes
set rfc2047_parameters=yes
set charset="utf-8"
4、邮件发送测试(-s邮件标题) # echo "邮件内容123456" | mutt -s "邮件标题测试邮件" test@126.com
附录1
Evolution,是ubuntu系统,安装后就自带的邮件客户端,可以用来收取邮件(感觉这句是废话。。。。。)。鉴于很多新手,即便是在WINDOWS系统下,都不会用客户端软件来收取邮件(少数吧。。。。。),这次就先写这个 Evolution,软件的配置教程了。
Ubuntu系统安装好以后,从 Applications(应用程序)—Internet(互联网)— Evolution Mail,就能运行。如图:
第一次运行,就会要求你配置邮件账户,这里,我以自己的163 账户,来教大家一步一步的配置Evolution。软件首次运行,出现的是欢迎界面,不用看,直接点击“Forward(前进)”。
第二个界面,是“账户信息还原”界面。Evolution这个软件,在软件里面,支持对你账户信息,密码,邮件等信息的备份和还原。我后面会讲到。因为我们现在没有备份文件,所以这个步骤,直接点击Forward,过去就是了。
第三个界面,是要求填写基本信息,包括:邮件地址,用户名等,看图,我逐个解释。
1. Full name:你的名字,随便写吧
2. E-mail: 邮箱地址,比如我的 nkevin@163.com
3. Reply-to: 回复到。。。。。哪个邮箱
4. Orgization:组织。(我那个英文,是 家庭 的意思),这里随便填写的。
5. Make this My Default account: Evolution,是支持管理多个邮箱的,这个选项,意思是:设置本邮箱为默认账户。因为我就用一个邮箱,这里就勾选了。
填写好以后,进入下一步。邮箱收取设置,如图:
目前网上99%的邮箱,想用软件来收取/发送邮件,都必须用到: POP 服务器地址 和 SMPT 服务器地址。前者是收取邮件用的,后者是发送邮件用的。这两个地址,都能从你邮箱里面查询到。想用软件收取/发送邮件,必须先知道这两个地址。
对于网易 163 邮箱,它们的地址分别是: pop.163.com 和 smtp.163.com。
其实这个地址都是“大同小异”的,比如,126的邮箱,就是 pop.126.com,新浪是 pop.sina.com.cn。。。。。。。类似的。
看图,先点击图中“Server Type”后面的:None,就会出现选择框,选择里面的:POP
选择后,就会出现POP服务器地址填写/设置界面,看图:
1. Server: 就是刚才说过的POP服务器地址,我的163是 pop.163.com,填写就行了
2. username:就是你邮箱 @ 前面那个名字,比如我 nkevin@163.com,这里就是 nkevin
3. Remember Password: 记住密码,这个很有用,要勾选,你不想以后每次收取邮件,都要填写密码吧。。。。
其他的项目,我们不需要理会,也没必要知道什么意思。填写好,直接Forward,进入下一步。如图
我还是逐个解释
1.Check for new messages every .....minutes:每隔 多少分钟,检查一次新邮件
2.Leave messages on server: 保存邮件在服务器上。(就是收取后,服务器上的邮件不删除,还留着)
3.Delete after ..... days: 每隔 多少天,就把服务器上面的邮件删除。
4.Dsiable support for all POP3extensions:禁用POP3扩展。(这个我也不太明白。。。。。有人知道的话,麻烦帮我解释下吧。我没勾选它)
这个都是根据你自己的习惯设置的,设置好后,Forward,进入:邮件发送服务器设置,就是刚才提到的,SMTP 服务器地址设置
和上面设置POP的地方,大致相同的。
1. Server:就是smtp地址了。我163是:smtp.163.com
2. Username: 和上面那个完全相同
3. Remember Password:勾上吧,记住密码
其他不用理会,直接Forward,看图:
这里,是让你设置个名字,在Evolution里面显示的名字,比如你是163的,就可以写个“我的网易邮箱”之类的。我是懒着写,我就一个邮箱,还写啥。。。。。
直接点击Forward吧。继续
到了“设置时区”,只要你的Ubuntu系统安装的时候,设置好了,这里就自动识别,看我图里,就是“上海”(没有你自己准确的城市的话,就用上海就行,差不了多少的)。继续Forward
设置完成,直接点击: Apply(应用),就行了。
到此,用Evolution配置一个邮箱,就彻底搞定了。可以进入软件,来收取邮件了。
第一次进入软件,如果你连接好网络了,它就会自动收取邮件,并且询问你邮箱的密码。如图:
自己输入就是了,这个不用教吧? 输入完了按OK,开始收取邮件
最后声明一下,我用的是英文的Ubuntu,所以这个软件,从始至终,大家看到的都是英文界面。一般人的Evolution,在进行了系统“语言支持”的更新后,就能变成中文界面的。这个大家可以放心,不会让你一直面对英文的。
休息下。。。。。。。请大家先别回帖,我后面还要写Evolution 的备份还原 和 如何收取QQ邮件
吃了口饭,继续。至于到了软件里面,收取写信什么的,我实在是不知道该怎么写了。我只写个最重要的,资料备份
刚才说过了,Evolution支持备份还原你的账户,邮件等资料。
备份方法:在软件里面,点击左上角的 File(文件) — Backup Settings(备份设置),如图
直接弹出文件保存对话框,着个地方保存吧,名字嘛,自己随便,改不改都行,我是没改。
点击 Save(保存),出现个提示,意思是:要进行备份操作,必须先关闭Evolution。直接点击OK就是了。就自动开始备份了。
备份是全自动的,无需你任何干预。我是备份到了桌面,名字默认,叫做:evolution-backup.tar.gz
现在我们来说下还原,假设,你系统重装了,或者Evolution账户要重新设置了,就还是按上面的教程,经过“欢迎界面”,到:Restore From Backup,这里。
看图,勾选:Restore EvolutionFrom backup files,然后点击“None”,选择你备份的文件。
还原过程,自然也是全自动的。完成后,自动进入软件,你就能回到备份时候的状态了,包括你的账户信息,软件设置,邮件等。
很多人配置完evolution之后,想去改配置,出于QQ邮箱要不同的配置,找不到这个启动界面,其实,可以这样操作
编辑-首选项- -在邮件账号处更改
附录2
相信很多人,都用QQ邮箱,作为自己日常交流的邮箱。在这里Linux下,我就教大家如何用Evolution,收取QQ邮箱的邮件。
很多人都说,不管是Windows下还是linux下,用软件都不能接收QQ邮箱,其实是可以的,原因很简单,因为QQ邮箱,默认的情况下,没有“开启POP和SMTP”服务。自然,就没法用软件,收取了。
所以,我们要做的,其实就是去网上,QQ邮箱的“设置”—“账户”里面,勾选“POP,SMTP”服务器。然后就能像配置163邮箱一样,用Evolution配置QQ邮箱,接收发送邮件了。
看图,我以自己的QQ邮箱为例子。
点击图中红色方框处的:“设置”
继续,点击:“账户”。进入账户页面后,往下赵,就能找到“POP3/IMTP/SMTP”服务器设置。如图
看我的图进行操作吧,勾选:开启POP3/SMTP服务,开启IMAP/SMTP服务
看我蓝色的框里面,这里提供了用软件发送接收邮件,所需的POP服务器地址和SMPT地址。
QQ 邮箱 POP 地址: pop.qq.com
SMTP地址:smtp.qq.com
里面还有个“收取选项”,都是中文的,我不解释了,自己看着办吧。
最后,别忘了点击: 保存更改!!!!!!!!!!!!!!!!!!!!!!!
到这里,就成功开启了。可以去evolution里面,配置QQ账户了。配置的过程,基本和我讲过的配置163邮箱的过程,都一样,不一样的地方是:
在Sending mail,那个步骤里面(帖子最后一张图)。把里面的:“Authentication”,下面的“type"。它默认的是: PLAIN.
大部分邮箱,这里都不需要动的,但QQ邮箱,需要把这个项目,改成 login!!!必须改,不改就没法发送邮件哦!