Linux下的motion detection(最簡單的辦公室監控系統) 郵件自動傳送
每天需要多次備份檔案,所做操作比較機械化,所以就想在shell下自動幫我備份檔案,開始想使用mail命令但是mail命令發郵件需要開啟sendmail服務,我只是一臺客戶端,開個sendmail沒有必要,於是乎,在網上找了好久,才發現mutt是個好東西。
在ubuntu下安裝mutt很方便,只需要sudo apt-get install mutt,另外需要安裝msmtp,一個發郵件的小工具,sudo apt-get insall msmtp。這兩個檔案都很小,一下子就裝完了。
接下來是配置檔案,也很簡單,這裡我引用網上別人的配置和命令列。另外在檔案的最後,附上一個指令碼檔案,是通過傳送電子郵件自動備份。
=====================================引用================================
MUTT
系統全域性設定/etc/Muttrc,如果使用某個系統使用者,可以在~/.muttrc中設定。
vi /etc/Muttrc
set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="FengYuBin"
set envelope_from=yes
MSMTP
建立~/.msmtprc和~/.msmtp.log,分別為配置和日誌檔案。
vi .msmtprc
account default
host smtp.163.com
auth plain
user fyb
password 123456
logfile ~/.msmtp.log
由於password是明碼,所以我們需要修改此檔案的許可權。
chmod 600 .msmtprc
touch ~/.msmtp.log
檢視SMTP伺服器是否支援認證的TLS加密:
[[email protected] ~]$ msmtp --host=smtp.163.com --serverinfo
SMTP server at smtp.163.com (m5-86.163.com [202.108.5.86]), port 25:
163.com Anti-spam GT for Coremail System (163com[20050206])
Capabilities:
PIPELINING:
Support for command grouping for faster transmission
AUTH:
Supported authentication methods:
PLAIN LOGIN
到這裡,你可以使用mutt來發送郵件了,我們測試一下。
echo "test" |mutt -s "my_first_test" [email protected]
-s "subject"
-c "carbon-copy"
echo "test" |mutt -a dbms_stats.txt -s my_first_test [email protected]
echo -e "文字描述,可以帶引數$allname" | mutt -a "附件(寫好路徑)" -a "附件2(寫好路徑)" [email protected],[email protected](收信人) -c [email protected],[email protected] (抄送)
觀察.msmtp.log檔案,如果有錯會在日誌檔案中被報告出來,當然,成功傳送的日誌也會出現在此日誌檔案內。
到這裡傳送郵件的過程已經全部完成,接下來要做的事就簡單了,我們假設每天凌晨定時傳送信件給公司某使用者,可以編寫指令碼處理。
mail.sh
#!/bin/sh
content="you can tell your colleague what something to do at tomorrow"
echo "$content" |mutt -s "hi Jacky" Jacky's_email
OK,上面這些就是我實現自動傳送郵件的全部過程,怎麼樣,很輕鬆吧!
=================================下面是我指令碼檔案=======================
#!/bin/bash
cd
fileName=bak\($(date +%Y%m%d%H%M)\).zip #產生檔名
zip $fileName -r fw2 #將需要備份的目錄fw2打包
sleep 1 #睡眠一秒,讓zip打包完成的檔案寫入硬碟
echo "Sending mail..."
#呼叫mutt傳送檔案
echo "firewall code src backup" | mutt -s "$fileName" [email protected] -a "$fileName"
echo "Sent OK"