這裡需要解決兩個方面的問題:
1.如何控制傳送時間?
2.如何通過指令碼來傳送郵件?
對於第乙個問題:
設定定時指令碼每日檢測當前日期是本週的週幾,滿足要求則執行需要操作的任務,否則退出。
### 假定測試的是今天是否是周五
datecol=`date -d today +\%y\%m\%d`
pos=`date -d $datecol +%w`
echo $pos
if [ $pos -ne 5 ]; then
echo "not friday yet!"
exit 0
fi### do the job here
對於第二個問題:
需要考慮傳送郵件的格式,比如標題、內容、收件人、抄送、附件等。
如果需要自己寫函式搞定的話,可以用python來實現。
基本思路就是先編寫乙個傳送郵件的核心函式,再寫乙個函式使用者在shell下呼叫。
# -*- coding: utf-8 -*-
from email.mime.multipart import mimemultipart
from email.mime.base import mimebase
from email.mime.text import mimetext
# python 2.3.*: email.utils email.encoders
from email.utils import commaspace,formatdate
from email import encoders
import os
#server['name'], server['user'], server['passwd']
def send_mail(server, fro, to, subject, plaintext, htmltext, files=):
assert type(server) == dict
assert type(to) == list
assert type(files) == list
#set the format of content: 'plaintext' 'htmltext'
#and the encoding format: 'utf-8' 'gb2312 '
msgtext = mimetext(htmltext, 'plain', 'utf-8')
### from to subject plaintext/htmltext
msg = mimemultipart()
msg['from'] = fro
msg['subject'] = subject
msg['to'] = commaspace.join(to) #commaspace==', '
msg['date'] = formatdate(localtime=true)
msg.attach(mimetext(msgtext))
### attachment
for file in files:
part.set_payload(open(file, 'rb'.read()))
encoders.encode_base64(part)
part.add_header('content-disposition', 'attachment; filename="%s"' % os.path.basename(file))
msg.attach(part)
### sending
import smtplib
smtp = smtplib.smtp(server['name'])
smtp.login(server['user'], server['passwd'])
smtp.sendmail(fro, to, msg.as_string())
smtp.close()
shell程式設計 指令碼實現定期清理檔案
定期清理規定多少天前的日誌檔案 opt logs下面的檔案 clear log.sh bin bash 日誌目錄 log dir 1 超過多少天的日誌會被清理 old days 2 當前時間 秒 time now date s 期限 limit 3600 24 old days 獲取所有檔案 fil...
如何根據日期實現計算當日是星期幾
原文 如何根據日期實現計算當日是星期幾 2012 01 21 13 27 34 分類 常見難題解決方法 舉報 字型大小 訂閱 如何根據日期實現計算當日是星期幾?今天在編寫ds1302實時時鐘裡,引發這個猜想,想實現根據日期來計算出這個日期是星期幾了,並顯示在1602液晶裡。因此現在收集了這方面的資訊...
如何通過呼叫printf函式實現向串列埠傳送資料
printf函式是標準的庫函式,定義在stdio.件中。printf函式在keil的底層 在keil中的標準c庫中,printf scanf等輸入輸出資料流函式是通過fputc fgetc來實現最底層操作的,所以我們只需要在我們的工程中重定義這兩個函式的功能就可以實現printf scanf等資料流...