Como, como você diz, é uma máquina que você criou, por que não montá-lo em uma unidade compartilhada (CIFS ou NFS) e fazer a saída para ele?
Isso também pode ser útil para outras necessidades de compartilhamento de arquivos.
Estou dando um curso neste verão. A primeira tarefa dos meus alunos será instalar uma máquina virtual que eu criei (a máquina rodará o Ubuntu). Após a instalação, eles devem executar o seguinte script
$ 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!"
O script registra seu sobrenome e me envia um e-mail notificando que eles instalaram a máquina.
A parte chata aqui é que eu vou acabar recebendo 30 e-mails e que eu tenho que analisar todas essas informações eu mesmo. Eu estou querendo saber se existe uma maneira melhor para eu coletar esses dados. Por fim, seria ótimo ter um script bash que acrescente cada sobrenome a um arquivo csv que eu possa acessar.
Existe uma ferramenta no unix projetada para fazer esse tipo de coisa?
Como, como você diz, é uma máquina que você criou, por que não montá-lo em uma unidade compartilhada (CIFS ou NFS) e fazer a saída para ele?
Isso também pode ser útil para outras necessidades de compartilhamento de arquivos.
Existem vários Agentes de Entrega de Correio (MDA) que podem filtrar correio por vários critérios (incluindo Subject:
header). Alguns dos mais comuns são procmail , maildrop e filtro .
Eu usei procmail
por décadas. Para filtrar e-mails com o cabeçalho Assunto: em uma caixa de correio separada, criei uma regra como esta no meu ~/.procmailrc
:
:0
* ^Subject: Class Update
class-update/
procmail
suporta as caixas de correio de mbox
de arquivo único e Maildir
style de um arquivo por mensagem. O exemplo acima armazenará a mensagem em uma pasta do Maildir chamada ~/Mail/class-update/
. Remova o /
à direita se você preferir o formato mbox.
BTW, seria uma boa ideia:
Peça a ID do aluno também. Na minha experiência, é extremamente comum ter sobrenomes duplicados (na verdade, você deve perguntar por "Nome da Família" em vez de "sobrenome" ou "sobrenome" porque o sobrenome nem sempre é o sobrenome).
Altere o assunto para "Class Update: $(timestamp) $name [$id]"
ou similar. Então o seu procmail
(ou outro MDA) regras só precisa extrair o cabeçalho Subject: e pode jogar fora (ou melhor ainda, arquivar em uma caixa de correio) o resto da mensagem.
Por exemplo, a seguinte regra do procmail salvará a mensagem em uma pasta como acima e, em seguida, extrairá os cabeçalhos Date: e Subject: e os salvará em um arquivo.
: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
}
FYI, formail
é uma ferramenta de formatação de e-mail que vem com procmail
.
Tags bash shell-script data