私は今夏に講座を教えています。私の学生の最初の課題は、私が作成した仮想マシンをインストールすることです(このマシンは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通のEメールが届き、そのすべてのEメールを直接分析する必要がありました。このデータを収集するより良い方法があるかどうか疑問に思います。最終的に私がアクセスできるcsvファイルに覚醒を追加するbashスクリプトがあれば良いでしょう。
このようなことのために、特にUnixにツールがありますか?
答え1
おっしゃるように自分が作ったマシンなので、共有ドライブ(CIFSまたはNFS)をマウントして出力するようにしたらどうでしょうか。
これは他のファイル共有のニーズにも役立ちます。
答え2
Subject:
ヘッダーを含むさまざまな基準でメッセージをフィルタリングできる複数の電子メール配信エージェント(MDA)があります。より一般的なもののいくつかは次のとおりです。プログラムメール、メール配送とフィルター。
何procmail
十年も使ってきました。 "タイトル:"ヘッダーを含むメッセージを別のメールボックスでフィルタリングするには、次の規則を実行します~/.procmailrc
。
:0
* ^Subject: Class Update
class-update/
procmail
mbox
単一ファイルメールボックスとMaildir
メールごとに1つのファイルを含むメールボックスをサポートします。上記の例では、Maildirというフォルダにメールを保存しています~/Mail/class-update/
。/
mbox 形式を好む場合は、末尾を削除します。
ところで、次のことをお勧めします。
学生証もくれと言ってください。私の経験上、姓を繰り返すことは非常に一般的なことです(実際、姓は常に姓ではないため、「姓」や「姓」ではなく「姓」を要求する必要があります)。
テーマを、
"Class Update: $(timestamp) $name [$id]"
または同様のものに変更します。その後、ユーザーprocmail
(または他のMDA)ルールはSubject:ヘッダーのみを抽出し、残りのメッセージは削除できます(またはメールボックスに保存することをお勧めします)。
たとえば、次の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
。