
今年夏天我正在教一門課。我的學生的第一個作業是安裝我創建的虛擬機器(機器將運行 Ubuntu)。安裝後,他們將運行以下腳本
$ cat ~/bin/all-done
#!/bin/bash
timestamp() {
date +"%Y-%m-%d_%H-%M-%S"
}
echo "Type your last name: "
read name
SUBJECT="Class Update"
TO="my_email@my_domain.com"
MESSAGE="/tmp/message.txt"
echo "$name completed the assignment" >> $MESSAGE
echo "Time: $(timestamp)" >> $MESSAGE
/usr/bin/mail -s "$SUBJECT" "$TO" < $MESSAGE
rm $MESSAGE
echo "You completed the first assignment. Welcome to the class!"
該腳本記錄了他們的姓氏並向我發送一封電子郵件,通知我他們安裝了機器。
令人煩惱的是,我最終會收到 30 封電子郵件,而且我必須自己解析所有這些資訊。我想知道是否有更好的方法來收集這些數據。最終,如果有一個 bash 腳本將每個姓氏附加到我可以存取的 csv 檔案中,那就太好了。
unix中有沒有專門做這種事的工具?
答案1
正如您所說,既然它是您創建的機器,為什麼不讓它安裝共用磁碟機(CIFS 或 NFS)並向其輸出呢?
這對於其他文件共享需求也可能很有用。
答案2
有多種郵件傳送代理程式 (MDA) 可依各種標準(包括Subject:
標頭)過濾郵件。一些更常見的是程式郵件,郵件投遞, 和篩選。
我已經用了procmail
幾十年了。要將帶有“主題:”標頭的郵件過濾到單獨的郵箱中,我將在我的中建立以下規則~/.procmailrc
:
:0
* ^Subject: Class Update
class-update/
procmail
支援mbox
單文件郵箱和Maildir
每封郵件一個文件的郵箱。上面的範例將把郵件儲存在名為 的 Maildir 資料夾中~/Mail/class-update/
。/
如果您喜歡 mbox 格式,請刪除尾隨。
順便說一句,最好:
還要索取學生證。根據我的經驗,重複姓氏是非常常見的(實際上,您應該詢問“姓氏”而不是“姓氏”或“姓氏”,因為姓氏並不總是姓氏)。
將主題更改為
"Class Update: $(timestamp) $name [$id]"
或類似。然後,您的procmail
(或其他 MDA)規則只需要提取主題:標頭,並可以丟棄(或者更好的是,存檔到郵箱)郵件的其餘部分。
例如,以下 procmail 規則會將郵件儲存到上述資料夾中,然後提取 Date: 和Subject: 標頭並將它們儲存到檔案中。
:0
* ^Subject: Class Update
{
# first save a copy of the message (for a safety archive)
:0c
class-update/
# then extract the Subject line and save it to a file
:0 fw
| formail -c -xSubject | sed -e 's/^Class Update: //' \
>> /path/to/class-updates.txt
}
僅供參考,formail
是一個郵件格式化工具,附帶procmail
.