仮想マシンのユーザーからデータをより効率的に収集する方法は?

仮想マシンのユーザーからデータをより効率的に収集する方法は?

私は今夏に講座を教えています。私の学生の最初の課題は、私が作成した仮想マシンをインストールすることです(このマシンは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/

procmailmbox単一ファイルメールボックスとMaildirメールごとに1つのファイルを含むメールボックスをサポートします。上記の例では、Maildirというフォルダにメールを保存しています~/Mail/class-update//mbox 形式を好む場合は、末尾を削除します。

ところで、次のことをお勧めします。

  1. 学生証もくれと言ってください。私の経験上、姓を繰り返すことは非常に一般的なことです(実際、姓は常に姓ではないため、「姓」や「姓」ではなく「姓」を要求する必要があります)。

  2. テーマを、"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

関連情報