用LINUX的shell脚本来监测服务器 ,原理就是用PING命令监测服务器。希望能对一些朋友有帮助。视频录制完成后发现有一步没做所以在这里补上,完成后运行 chmod a+x ping.sh #给ping.sh可执行权限。才能执行。
下面是用到的代码
shell脚本检测主机是否存活
1.Step1.安装sendmail来发邮件
# yum -y install sendmail
# /etc/init.d/sendmail start
# chkconfig sendmail on
并配置sendmail服务器,在/etc/mail.rc文件最后添加以下文本:
vi /etc/mail.rc
set smtp-auth-user=xxxxxx #注:外部smtp服务器认证的用户名
set smtp-auth-password=******** #注:密码,此处使用网易邮箱授权密码
set smtp-auth=login #注:邮件认证的方式
退出后,重启sendmail服务:
service sendmail restart
测试sendmail发送邮件。
2.Step2.安装邮件客户端
# yum -y install mutt
2.1添加发件人信息,如下
# vim /etc/Muttrc
set charset="utf-8" #设置发邮件编码
set envelope_from=yes
set rfc2047_parameters=yes #解决附件乱码问题
set realname="报警" #发件人别名
set use_from=yes #指定是否显示别名
新建一个 mutt.sh 脚本
#!/bin/bash
测试邮件是否发送 实测163的邮箱 发送不出去 会被退回 在垃圾邮件里
3.Step3.Ping主机状态脚本————————————————————这开始写脚本
# vim ping.sh
#!/bin/bash
#
DATE=`date +%F_%H:%M`
LOG=/root/ping-monitor/ping.log
IP=/root/ping-monitor/ip.txt
CLEAN=`cat $LOG | wc -l`
for i in $(cat $IP);
do
ping -c 2 $i &>/dev/null
if [ $? -eq 0 ];then
echo "$DATE $i Host ping is success." >> $LOG
else
echo -e "Date : $DATE\nHost : $i\nProblem : Ping is failed, Please check ! ! !" |
fi
done
#如果日志文件超30条,则清空
if [ $CLEAN -ge 30 ];then
echo "" > $LOG
fi
linux下执行.sh文件的方法
chmod a+x test.sh #给test.sh可执行权限
Step4.添加任务计划
# crontab -e
*/1 * * * * /bin/bash /root/ping-monitor/ping.sh
安装crontab:
yum install crontabs
服务操作说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //启动状态查询
查看crontab服务是否已设置为开机启动,执行命令:
ntsysv
加入开机自动启动:
chkconfig --add crond
.使用实例
实例1:每1分钟执行一次command
命令:
* * * * * command
实例2:每小时的第3和第15分钟执行
命令:
3,15 * * * * command
实例3:在上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * * command
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 */2 * * command
实例5:每个星期一的上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * 1 command
实例6:每晚的21:30重启smb
命令:
30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4 : 45重启smb
命令:
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb
命令:
10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
命令:
0,30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb
命令:
0 23 * * 6 /etc/init.d/smb restart
实例11:每一小时重启smb
命令:
* */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb
命令:
* 23-7/1 * * * /etc/init.d/smb restart
实例13:每月的4号与每周一到周三的11点重启smb
命令:
0 11 4 * mon-wed /etc/init.d/smb restart
实例14:一月一号的4点重启smb
命令:
0 4 1 jan * /etc/init.d/smb restart
实例15:每小时执行/etc/cron.hourly目录内的脚本
命令:
01 * * * * root run-parts /etc/cron.hourly
说明:
run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了
linux怎样查看 某项服务 当前启动状态
#service servicename status
比如查看防火墙:#service iptables status
#chkconfig --list |grep 服务名
比如查看telnet:#chkconfig --list |grep telnet
0 6 * * * //root/script/ss.sh >> /root/mylog.log 2>&1
领取专属 10元无门槛券
私享最新 技术干货