A. linux下shell腳本PING命令只要延遲高於100ms就發送個郵件
#!/bin/bash第三行Timeout_limit值寫錯了,應該是100哈,代碼提交了不能改了。你這個不需要把延遲結果保存在文件的,而是應該需要作定時檢測的。
Timeout=0;
Timeout_limit=1;
Timeout_flag=0;
IP="8.8.8.8"
while [ 1 ]
do
# 取平均延遲的整數位
Timeout="`ping $IP -c 3 | grep 'min/avg/max/mdev'|awk '{print $4}'|cut -b ƍ'`"
if [ $Timeout -ge $Timeout_limit ] && [ $Timeout_flag -ne 1 ]; then
echo ping timeout, average delay=$Timeout ms
mail -s 'Ping Delay' 郵箱 < ar/log/boot.log
Timeout_flag=1
fi
if [ $Timeout -lt $Timeout_limit ] && [ $Timeout_flag -ne 0 ]; then
echo ping recovery, average delay=$Timeout ms
mail -s 'Ping recovery' 郵箱 < ar/log/boot.log
Timeout_flag=0
fi
sleep 5
done
B. Linux設置郵件提醒
《Linux設置定時任務》 一文中,我們學習了使用crontab設置定時任務的方法,並用它來獲取ganglia的運行狀態。這樣還不夠,我們想要在ganglia的運行狀態出現問題時通知我們,這樣,我們就不用每天自己查看日誌了。
本文主要參考 Ubuntu mail命令發送郵件 和 如何通過Shell腳本實現發送郵件通知功能? 。
1、安裝mailutils
sudo apt-get install mailutils
2、General type of mail configuration選擇Internet Site。
3、System mail name輸入mail.voidking.com。
命令格式:
mail [OPTION...] [address...]
常用到的選項,一個是s,代表主題;一個是A,代表附件。其他的需要時查看help。
目標:給郵箱 [email protected] 發送郵件,主題為「Hello VoidKing」,內容為「Welcome to mail world!」
mail -s 'Hello VoidKing' [email protected]
提示Cc,這里不需要抄送,就直接回車。然後輸入郵件內容「Welcome to mail world!」,回車,ctrl+D,發送郵件。
但是,等待了幾分鍾,並沒有收到郵件,垃圾箱也沒有。
mail ,查看email的發送狀態為Undelivered Mail Returned,原來沒有投遞出去。
查看郵件系統日誌: tail -n 50 /var/spool/mail/test ,提示host mx3.qq.com[183.57.48.35] said: 550 Mail content denied。看來qq郵箱的垃圾郵件防禦機製做的不錯,那就換個163郵箱,沒想到依然失敗。
那就換一台伺服器!發送給 [email protected] ,成功!很尷尬。。。
除了上面的方式發送郵件,我們還可以使用:
mail -s 'Hello VoidKing' [email protected] <<< 'Welcome to mail world!'
或者使用:
echo 'Welcome to mail world!' | mail -s "Hello VoidKing" [email protected]
1、從文本讀入內容發送郵件
mail -s 'Error report' [email protected] < /tmp/log/ganglia/error-20180524.log
2、發送附件
mail -s 'Error report' [email protected] -A /tmp/log/ganglia/ganglia-20180524.log < /tmp/log/ganglia/error-20180524.log
3、指定發件人
echo 'Welcome to mail world!' | mail -s "Hello VoidKing" [email protected] -aFrom:[email protected]
失敗了,收不到郵件,不知道什麼原因,留個坑吧。
目標:每天獲取一次ganglia的狀態日誌,然後通過checkganglia.sh腳本進行審閱。審閱完畢,發送審閱結果到管理員的郵箱。
修改checkganglia.sh腳本為:
至此,大功告成! 《Linux設置定時任務》 配合 《Linux設置郵件提醒》 ,簡直完美!兩篇文章完成了一個小系統:定時生成ganglia日誌,定時審閱ganglia日誌,並且把審閱結果通過郵件發送給管理員。
Linux命令大全——LMNOPQ
如何在Ubuntu環境下搭建郵件伺服器(一)
C. linux 發郵件python腳本怎麼檢查是否發送成功
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#導入smtplib和MIMEText
import smtplib,sys
from email.mime.text import MIMEText
def send_mail(sub,content):
#############
#要發給誰,這里發給1個人
mailto_list=["[email protected]"]
#####################
#設置伺服器,用戶名、口令以及郵箱的後綴
mail_host="mail.gyyx.cn"
mail_user="[email protected]"
mail_pass="123456677890"
mail_postfix="gyyx.cn"
######################
'''''
to_list:發給誰
sub:主題
content:內容
send_mail("[email protected]","sub","content")
'''
me=mail_user+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content,_charset='gbk')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(mailto_list)
try:
s = smtplib.SMTP()
s.connect(mail_host)
s.login(mail_user,mail_pass)
s.sendmail(me, mailto_list, msg.as_string())
s.close()
return True
except Exception, e:
print
D. linux中群發不同郵件到不同的郵箱腳本怎麼寫
一、修改/etc/mail.rc //在最後面追加就行,也可以 echo >>
set [email protected] //你自己的真實郵箱地址
set smtp=smtp.exmail.qq.com //在郵箱設置,客戶端設置,設置方法,發送伺服器里
set [email protected] //自己郵箱真實地址
set smtp-auth-password=123456 //自己郵箱密碼
set smtp-auth=login
:wq
二、到這里已經實現實現外部郵箱發送mail了,可以命令行輸入
echo "Test Mail" | mail -s "Test" [email protected]
########################################################################
也可以寫腳本:
#!/bin/bash
user="
目標1 [email protected]
目標2 [email protected]
……
"
userlist=`echo -e "${user}" | awk 『{print $2}『`
echo $userlist
mail -v -s "測試郵件" $userlist < test.txt
:wq
其中:
-v 顯示詳細信息
-s 郵件標題
test.txt 是你要輸入郵件的內容
然後crontab -e 編輯計劃任務,就可以實現定時發送郵件啦!