Shell脚本监控专线Network并SendEmail报警
?
Much effort, much prosperity.
配置服務器監控專線網絡
項目介紹:
配置一臺服務器監控專線網絡的情況,(由于公司業務的原因需要用到專線進行與客戶對接)實時監控專線的狀態,如果專線不通則進行報警
報警方法有郵件報警,微信報警,和監控器報警等
公司搭建的郵件報警就是寫腳本進行監控網絡是否通暢,不通則直接發郵件進行報警,更直接,更方便相比傳統的監控器監控服務(zabbix、nagios、cacti等)更直觀,(個人意見)畢竟專線的網絡是挺重要的!微信報警則就顯得比較繁瑣更麻煩還需要調用微信的接口什么的
項目準備:
一臺服務器,因為只有一個腳本需要跑占用的資源不大,可以放在其他服務器上(比如測試服務器,日志服務器,監控服務器等盡量避開生產服務器)因為項目已經部署,我這里在虛擬機上進行還原步驟
?
[root@localhost ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@localhost ~]# uname -a Linux localhost.localdomain 2.6.32-696.16.1.el6.x86_64 #1 SMP Wed Nov 15 16:51:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux配置安裝:
安裝郵件系統sendmail
[root@localhost ~]# cd /usr/src/ [root@localhost src]# wget -c http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz [root@localhost src]# tar xf sendEmail-v1.56.tar.gz [root@localhost src]# cd sendEmail-v1.56 [root@localhost sendEmail-v1.56]# cp -a sendEmail /usr/local/bin/ [root@localhost sendEmail-v1.56]# chmod +x /usr/local/bin/sendEmail [root@localhost sendEmail-v1.56]# file /usr/local/bin/sendEmail /usr/local/bin/sendEmail: a /usr/bin/perl -w script text executable安裝依賴(針對CentOS6.x)
[root@localhost ~]# yum -y install perl-Net-SSLeay perl-IO-Socket-SSL [root@localhost ~]# sendEmail -f goodmoodwjl@163.com -t wangjinlong@elements.org.cn -s smtp.163.com -u "你好王叔叔" -o message-content-type=html -o message-charset=utf8 -xu goodmoodwjl@163.com -xp *** -m "郵件主題:別來無恙" Jan 10 05:02:30 localhost sendEmail[14290]: Email was sent successfully! 命令說明: /usr/local/bin/sendEmail #命令主程序 -f from@uhanqiu.cn #發件人郵箱 -t to@huanqiu.cn #收件人郵箱 -s smtp.huanqi.cn #發件人郵箱的smtp服務器 -u "我是郵件主題" #郵件的標題 -o message-content-type=html #郵件內容的格式,html表示它是html格式 -o message-charset=utf8 #郵件內容編碼 -xu from@huanqiu.cn #發件人郵箱的用戶名 -xp zh@123bj #發件人郵箱密碼 -m "我是郵件內容" #郵件的具體內容如果你的是CentOS7.x系統使用如下安裝perl
還使用yum安裝會報錯如下,因為perl的版本高導致的,編譯安裝5.10版本perl
******************************************************************* Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER possibly with SSL_ca_file|SSL_ca_path for verification. If you really don't want to verify the certificate and keep the connection open to Man-In-The-Middle attacks please set SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application. ******************************************************************* at /usr/local/bin/sendEmail line 1906. wget http://www.cpan.org/src/5.0/perl-5.10.0.tar.gz tar xf perl-5.10.0.tar.gz cd perl-5.10.0 ./configure.gnu -des -Dprefix=/usr/local/perl echo $? make make test make install mv /usr/bin/perl{,.bak} ln -s /usr/local/perl/bin/perl /usr/bin/perl perl -v This is perl, v5.10.0 built for x86_64-linux腳本監控Script:
腳本的組成有4個文件
其中wss.sh為主腳本程序,其他三個為主程序調用的組件
組件說明:
ip.txt? ? ? ? ? 為監控的專線IP地址分為兩列,一列為IP,一列為別名
mima.txt? ? ? ? 為發件人的郵箱密碼(IMAT/SMTP密碼)可用其他程序進行加密
sou.txt? ? ? ? ?為收件人的郵箱,報警則會向此文件里的所有郵箱發一份
wss.sh? ? ? ? ? 為主程序,用于監控專線,對端IP或主機,調用其他三個文件,異常報警
script-wss.sh
#!/bin/bash DATE=`date +"%Y-%m-%d %H:%M"` IP=路徑/ip.txt MAIL='發件人@163.com' mima=`cat ./mima.txt` for ip in $(cat $IP | sed '/^#/d' | awk '{print $1}') doname=$(cat $IP | grep $ip | awk '{print $2}')neirong=$(echo -e "時間:$DATE\n地址:$ip\n專線:$name\n內容:專線異常")ping -c 10 -i 0.1 $ip &>/dev/nullif [ $? -ne 0 ]thenfor i in $(cat ./sou.txt)do/usr/local/bin/sendEmail -f $MAIL -t $i -s smtp.163.com -u "$name 異常通知" -o message-content-type=html -o message-charset=utf8 -xu 發件人@163.com -xp $mima -m "$neirong"donefi donescript-sou.txt
?里面寫的都是收件人的郵箱
abc@163.com abc@qq.com abc@.....script-ip.txt
里面的第一列都是要監控的IP地址,第二列為第一列的別名
114.114.114.114 美國 192.168.5.1 泰國 192.168.70.70 光大 192.168.3.3 新加坡 182.168.5.222 韓國 192.168.5.222 加拿大 8.8.8.8 日本 223.5.5.5 南國 133.226.7.7 緬甸script-mima.txt
可以用加密工具進行加密,也可以用shc進行轉換,shc可以把寫的所有腳本轉換為c語言寫的可執行文件,shc的詳解后續我會再寫
存放發件人的SMTP密碼注意
如要使用本腳本需按實際情況進行修改(路徑,郵箱,smtp)!
轉載于:https://www.cnblogs.com/LuckWJL/p/8143801.html
總結
以上是生活随笔為你收集整理的Shell脚本监控专线Network并SendEmail报警的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最大回文长度
- 下一篇: 1800万元砸向子公司 点击网络巩固Sa