가상 머신의 사용자로부터 데이터를 보다 효율적으로 수집하는 방법은 무엇입니까?

가상 머신의 사용자로부터 데이터를 보다 효율적으로 수집하는 방법은 무엇입니까?

저는 이번 여름에 강좌를 가르치고 있어요. 제 학생들의 첫 번째 과제는 제가 만든 가상 머신을 설치하는 것입니다(이 머신은 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통의 이메일을 받게 되었고 그 모든 이메일을 직접 분석해야 했습니다. 이 데이터를 수집하는 더 좋은 방법이 있는지 궁금합니다. 궁극적으로 내가 액세스할 수 있는 csv 파일에 각 성을 추가하는 bash 스크립트가 있다면 좋을 것입니다.

이런 종류의 일을 위해 특별히 Unix에 도구가 있습니까?

답변1

말씀하신 대로 자신이 만든 머신이므로 공유 드라이브(CIFS 또는 NFS)를 마운트하고 출력하도록 하면 어떨까요?

이는 다른 파일 공유 요구에도 유용할 수 있습니다.

답변2

Subject:헤더를 포함하여 다양한 기준으로 메시지를 필터링 할 수 있는 여러 MDA(메일 배달 에이전트)가 있습니다 . 더 일반적인 것 중 일부는 다음과 같습니다.프로그램 메일,메일배송, 그리고필터.

나는 그것을 procmail수십 년 동안 사용해 왔습니다. "제목:" 헤더가 있는 메시지를 별도의 편지함으로 필터링하려면 다음과 같은 규칙을 내 ~/.procmailrc:

:0
* ^Subject: Class Update
class-update/

procmailmbox단일 파일 사서함과 Maildir이메일당 하나의 파일이 포함된 사서함을 지원합니다 . 위의 예에서는 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
}

참고 formailprocmail.

관련 정보