Después de ver la primera parte, os traigo una segunda en la cual descargamos adjuntos de dos cuentas de correo, lo extraemos, sacamos los ficheros wav que se hayan enviado, los comprimimos a mp3 y por ultimo los subimos a un directorio de un servidor mediante FTP. ¿complejo, eh? no tanto.
instalar las dependencias
En esta ocasión vamos a usar offlineimap para conectarnos a un servidor de correo imap, mpack para estraet adjuntos y lame para convertir de wav a mp3:
sudo apt-get install offlineimap mpack lame
crear directorios
Estos servirán para almacenar los mensajes de cada cuenta de correo:
mkdir mail-cuenta1 mkdir mail-cuenta2
y estos otros para almacenar temporalmente los adjuntos:
mkdir adjuntos cd adjuntos mkdir cuenta1 mkdir cuenta2
ficheros
Editar el fichero .offlineimaprc y añadir información de las dos cuentas de correo:
[general] accounts = cuenta1,cuenta2 ui = Noninteractive.Basic [Account cuenta1] localrepository = cuenta1Local remoterepository = cuenta1Servidor [Repository cuenta1Local] type = Maildir localfolders = ~/mail-cuenta1/ [Repository cuenta1Servidor] type = IMAP remoteport = 143 remotehost = imap.servidor.com remoteuser = cuenta1@servidor.com remotepass = contrasenya usetls = tls [Account cuenta2] localrepository = cuenta2Local remoterepository = cuenta2Servidor [Repository cuenta2Local] type = Maildir localfolders = ~/mail-cuenta2/ [Repository cuenta2Servidor] type = IMAP remoteport = 143 remotehost = imap.servidor.com remoteuser = cuenta2@servidor.com remotepass = contrasenya usetls = tls
leer-cuenta1.sh
#!/bin/bash directorioadjuntos=/home/usuario/adjuntos/cuenta1/ directoriocorreo=/home/usuario/mail-cuenta1/INBOX/new/* directorioremoto=cuenta1 tiempo=300 while true; do echo "Descargar el correo a adjuntos." offlineimap && munpack -C $directorioadjuntos $directoriocorreo rm -f $directoriocorreo echo "Eliminar ficheros descargados que NO sean wav." find $directorioadjuntos ! -name "*.wav" -type f -delete echo "Renombrar ficheros descargados y convertirlos a mp3." for audio in $directorioadjuntos*.wav; do nuevoaudio=$(stat -c %y $audio | cut -d '.' -f1 | tr -d ' ') lame -b 128 -h $audio $directorioadjuntos$nuevoaudio.mp3 done echo "Subiendo ficheros de adjuntos por FTP." sh ftp.sh $directorioadjuntos $directorioremoto echo "Eliminar ficheros adjuntos." rm -f $directorioadjuntos*.* echo "Esperando $tiempo segundos." sleep $tiempo done exit 0
leer-cuenta2.sh
#!/bin/bash directorioadjuntos=/home/usuario/adjuntos/cuenta2/ directoriocorreo=/home/usuario/mail-cuenta2/INBOX/new/* directorioremoto=cuenta2 tiempo=300 while true; do echo "Descargar el correo a adjuntos." offlineimap && munpack -C $directorioadjuntos $directoriocorreo rm -f $directoriocorreo echo "Eliminar ficheros descargados que NO sean wav." find $directorioadjuntos ! -name "*.wav" -type f -delete echo "Renombrar ficheros descargados y convertirlos a mp3." for audio in $directorioadjuntos*.wav; do nuevoaudio=$(stat -c %y $audio | cut -d '.' -f1 | tr -d ' ') lame -b 128 -h $audio $directorioadjuntos$nuevoaudio.mp3 done echo "Subiendo ficheros de adjuntos por FTP." sh ftp.sh $directorioadjuntos $directorioremoto echo "Eliminar ficheros adjuntos." rm -f $directorioadjuntos*.* echo "Esperando $tiempo segundos." sleep $tiempo done exit 0
ftp.sh
#!/bin/bash directorioadjuntos=$1 directorioremoto=$2 ftp -inv www.servidor.com <<FINFTP user usuario contrasenya binary cd www.servidor.com/directorio/$directorioremoto lcd $directorioadjuntos mput *.mp3 quit FINFTP
ejecutar
para ejecutarlo, basta con dar permisos de ejecución:
chmod +x leer-cuenta1.sh chmod +x leer-cuenta2.sh
y ejecutar cada uno de los ficheros. Si estos se ejecutan en u servidor remoto, tal vez quieras revisar esta entrada sobre cómo ejecutar comandos en segundo plano en Linux.
Últimos comentarios