一、shell編寫郵件報警腳本
1、POSTFIX郵件服務器准備
a、首先卸載服務器上自帶的sendmail
rpm -qa sendmail* //查看安裝的sendmail
rpm -e sendmail-8.***** //卸載
b、安裝postfix(發郵件用的,25號端口)和dovecot(收郵件用的,110號端口)
yum install postfix* dovecot* -y
rpm -qa | grep postfix*
rpm -qa | grep devecot*
c、配置發郵件postfix
vim /etc/postfix/main.cf
1)修改myhostname
#myhostname = virtual.domain.tld
myhostname = mail.g.cn
2)修改mydomain
#mydomain=domain.tld
mydomain=g.cn
3)修改myorigin
myorigin=$myhostname
myorigin=$mydomain
4)修改smtp監聽端口
inet_interfaces=all
#inet_interfaces=$myhostname
#inet_interfaces=$myhostname,localhost
#inet_interfaces=localhost
5)修改mydestination
mydestination=$myhostname,$mydomain
#mydestination=$myhostname,localhost.$mydomain,localhost,$mydomain
#mydestination=$myhostname,localhost.$mydomain,localhost,$mydomain,mail.$mydomain,www.$mydomain,ftp.$mydomain
6)修改本地網段
mynetworks=192.168.31.60/24,127.0.0.0/8
#mynetworks=$config_directory/mynetworks
#mynetworks=hash:/etc/postfix/network_table
7)修改relay_domain轉發郵件域名
relay_domain=$mydestination
8)修改postfix aliasex郵件別名
#alias_maps=dbm:/etc/aliases
alias_maps=hash:/etc/aliases
#alias_maps=netinfo:/aliases
#alias_database=dbm:/etc/aliases
#alias_database=dbm:/etc/maik/aliases
alias_database=hash:/etc/aliases
#alias_database=hash:/etc/aliases, hash:/opt/majordomo/aliases
:wq
9)啟動postfix打開25號端口
service postfix restart
netstat -anp |grep :25
pstree |grep master //啟動后進程叫master
10)測試是否能發送郵件
echo hello | mail root@g.cn
報錯:-bash: mail: command not found
安裝:yum install -y mailx
查看郵件:mail
刪除郵件:d
退出:q
telnet發送郵件
telnet 192.168.31.60 25
mail form:發件人
rcpt to:收件人
data
郵件內容
quit
e、配置收郵件dovecot
vim /etc/dovecot/dovecot.conf
1)修改protocole支持pop3和pop3s
protocols=imap imaps pop3 pop3s
2)修改pop3和imaps在所在ipv4接口上監聽110與143端口
imap_listen = *
pop3_listen = *
n)開啟dovecot
service dovecot start
netstat -tunpl |grep :110
netstat -tunpl |grep :143
2、編寫web服務器監控
nc命令:
Linux中nc命令是一個功能強大的網絡工具,全稱是netcat。
語法:
nc [-hlnruz][-g<網關...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出文件>][-p<通信端口>][-s<來源位址>][-v...][-w<超時秒數>][主機名稱][通信端口...]
參數說明:
-g<網關> 設置路由器躍程通信網關,最丟哦可設置8個。
-G<指向器數目> 設置來源路由指向器,其數值為4的倍數。
-h 在線幫助。
-i<延遲秒數> 設置時間間隔,以便傳送信息及掃描通信端口。
-l 使用監聽模式,管控傳入的資料。
-n 直接使用IP地址,而不通過域名服務器。
-o<輸出文件> 指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存。
-p<通信端口> 設置本地主機使用的通信端口。
-r 亂數指定本地與遠端主機的通信端口。
-s<來源位址> 設置本地主機送出數據包的IP地址。
-u 使用UDP傳輸協議。
-v 顯示指令執行過程。
-w<超時秒數> 設置等待連線的時間。
-z 使用0輸入/輸出模式,只在掃描通信端口時使用。
touch web.sh
#!/bin/bash
#web.sh
nc -w 3 localhost 80 &>/dev/null
if [ $? -eq 0 ];then
str="apache web服務器目前狀態處於正常狀態!!!"
else
str="apache web服務器目前處於關閉或無響應狀態!!!"
fi
echo $str|mail -s 'apache web server' admin@g.cn
3、編寫mysql數據庫監控
touch mysql.sh
#!/bin/bash
#mysql.sh
nc -e 3 localhost 3306 &>/dev/null
if [ $? -eq 0 ];then
str="mysql server status Running!!!"
else
str="mysql server status Shuting!!!"
fi
echo $str | mail -s 'mysql server' admin@g.cn
4、編寫Disk硬盤空間監控
touch disk.sh
#!/bin/bash
#disk.sh
ds=`df |awk '{if(NR==7){print int($5)}}'` //視情況而定
if [ $ds -lt 45 ];then
str="disk space is less than 45%!!!"
else
str="disk space is greater than 45%!!!"
fi
echo $str | mail -s 'linux server disk space' admin@g.cn
5、編寫mem(內存)空間監控腳本
touch mem.sh
#!/bin/bash
#mem.sh
mem=`free -m |awk '{if(NR==2){printf("%.0f\n",(int($3)/int($2))*100)}}'` //四舍五入取整
if [ $mem -lt 45 ];then //表達式內為整數表達式,不能用浮點型
str="mem space is less than 45%,Achieve $mem%!!!"
else
str="mem space is greater than 45%,Achieve $mem%!!!"
fi
echo $str | mail -s 'linux server mem space' admin@g.cn
6、報警腳本重啟生效
1)設置腳本權限
chmod 755 /etc/init.d/mon.sh //mon.sh:將所有腳本放到這個腳本中,或者調用其他腳本,發送一封郵件即可
2)crontab -e //任務計划
*/5****bash /etc/init.d/mon.sh
如:10 13 *** /mnt/monitor.dh //每天的13:10執行這個代碼
3)tail -f /var/log/cron
4)郵件報警要提前測試准備郵件系統是否正常工作
