Quiero enviar un correo electrónico de una secuencia de comandos shell de Linux. ¿Cuál es el comando estándar para hacer esto y necesito configurar cualquier nombre de servidor especial?enviando un correo desde una secuencia de comandos shell de Linux
Respuesta
Si el servidor está bien configurado, por ejemplo, que tiene un MTA en funcionamiento, sólo puede utilizar el comando electrónico.
Por ejemplo, para enviar el contenido de un archivo, se puede hacer esto:
$ cat /path/to/file | mail -s "your subject" [email protected]
man mail
para más detalles.
¿Qué significa 'mta' aquí, hay un nombre completo o un enlace? Como principiante, eso es lo que quiero saber. Como carezco de experiencia para hacer eso. – Zen
@Zen MTA significa Agente de transporte de correo. postfix, sendmail, qmail, etc. –
@Zen en su mayor parte, puede considerar que MTA significa servidor SMTP o IMAP. – user151841
El comando mail
hace eso (¿quién hubiera imaginado ;-). Abra su shell e ingrese man mail
para obtener la página de manual del comando mail
para todas las opciones disponibles.
Generalmente, querrá usar el comando mail
para enviar su mensaje utilizando MTA local (que lo entregará mediante SMTP al destino o simplemente lo enviará a un servidor SMTP más potente, por ejemplo, en su ISP) . Si no tiene un MTA local (aunque es un poco inusual que un sistema de tipo UNIX omita uno), puede usar un MTA minimalista como ssmtp.
ssmtp
es muy fácil de configurar. Básicamente, sólo tendrá que especificar el lugar en el servidor SMTP de su proveedor es:
# The place where the mail goes. The actual machine name is required
# no MX records are consulted. Commonly mailhosts are named mail.domain.com
# The example will fit if you are in domain.com and you mailhub is so named.
mailhub=mail
Otra opción es utilizar una de las secuencias de comandos miríadas de que sólo tiene que conectar con el servidor SMTP directamente y tratar de enviar un mensaje allí, como Smtp-Auth-Email-Script , smtp-cli, SendEmail, etc.
"ssmtp" estaba instalado en la máquina, así que no pude probarlo, pero gracias de todos modos – Zubair
Si tanto exim como ssmtp están en ejecución, puede tener problemas. Entonces, si solo desea ejecutar un MTA simple, solo para tener un cliente smtp simple para enviar notificaciones de correo electrónico para insistencia, deberá purgar el MTA eventualmente preinstalado como exim o postfix primero y reinstalar ssmtp.
Entonces es bastante sencillo, la configuración de sólo 2 archivos (revaliases y ssmtp.conf) - Ver ssmtp doc -, y su uso en su fiesta o secuencia de comandos Bourne es como:
#!/bin/sh
SUBJECT=$1
RECEIVER=$2
TEXT=$3
SERVER_NAME=$HOSTNAME
SENDER=$(whoami)
USER="noreply"
[[ -z $1 ]] && SUBJECT="Notification from $SENDER on server $SERVER_NAME"
[[ -z $2 ]] && RECEIVER="another_configured_email_address"
[[ -z $3 ]] && TEXT="no text content"
MAIL_TXT="Subject: $SUBJECT\nFrom: $SENDER\nTo: $RECEIVER\n\n$TEXT"
echo -e $MAIL_TXT | sendmail -t
exit $?
Obviamente no se olvide abra su salida de firewall al puerto smtp (25).
¿Dónde puedo cambiar el número de puerto en este script? En mi servidor, el puerto smtp funciona en 8181. – manix
No haría esto en este shell, de lo contrario quedarás atrapado tarde o temprano. Podrías hacerlo en el archivo de configuración: ver http://unix.stackexchange.com/a/132731 – hornetbzz
¿Por qué se renuevan las líneas nuevas si hago echo simple $ MAIL_TXT? – KernelPanic
Admitiendo que desea utilizar algún servidor SMTP, puede hacerlo:
export SUBJECT=some_subject
export smtp=somehost:someport
export [email protected]
echo "some message" | mailx -s "$SUBJECT" "$EMAIL"
Cambio somehost
, someport
y [email protected]
a los valores reales que usaría. En este ejemplo no se realiza encriptación ni autenticación.
¿Y qué hacer si 'mailx' no está instalado? – nalply
Si desea un enfoque sencillo y limpio en bash, y usted no desea utilizar cat
, echo
, etc., la manera más simple sería:
mail -s "subject here" [email protected] <<< "message"
<<<
se utiliza para redirigir la entrada estándar . Ha sido parte de bash durante mucho tiempo.
echo -e "Some \ nMultiline and tab \ t msg" | mail -s "subject" [email protected] –
'cat << END' ...' END | mails "subject" test @ example.com' – ulidtko
¿Cómo uso este comando en script de shell? –
Otra opción para en un script bash:
mailbody="Testmail via bash script"
echo "From: [email protected]" >> /tmp/mailtest
echo "To: [email protected]" >> /tmp/mailtest
echo "Subject: Mailtest subject" >> /tmp/mailtest
echo "" >> /tmp/mailtest
echo $mailbody >> /tmp/mailtest
cat /tmp/mailtest | /usr/sbin/sendmail -t
- El archivo
/tmp/mailtest
es cada vez sobrescribe se utiliza este script. - La ubicación de sendmail puede diferir según el sistema.
- Al usar esto en un script cron, debe usar la ruta absoluta para el comando sendmail.
Ni siquiera necesita un MTA. El protocolo SMTP es lo suficientemente simple como para escribirlo directamente en su servidor SMTP. Incluso puede comunicarse a través de SSL/TLS si tiene el paquete OpenSSL instalado. Verifique esta publicación: https://33hops.com/send-email-from-bash-shell.html
Lo anterior es un ejemplo de cómo enviar correos electrónicos de texto/html que funcionarán de la caja. Si desea agregar archivos adjuntos, la cosa puede ser un poco más complicada, necesitará codificar64 en base a los archivos binarios e incrustarlos entre los límites. Este es un buen lugar para comenzar a investigar: http://forums.codeguru.com/showthread.php?418377-Send-Email-w-attachments-using-SMTP
En Linux, correo utilidad se puede utilizar para enviar datos adjuntos con la opción "-a". Ve a través de las páginas man para leer sobre la opción. Por ejemplo siguiente código va a enviar un archivo adjunto:
electrónico -s "esto está sujeto" -a attachment.txt [email protected] < < < "Hola amigos, Por favor, encontrar informes de fallos."
Bienvenido a SO. Gracias por publicar una respuesta. Lea la información sobre [cómo escribir una buena respuesta] (https://stackoverflow.com/help/how-to-answer) y modifique en consecuencia. Disfruta SO ;-) – ZF007
- 1. Enviar correo desde una secuencia de comandos de Windows
- 2. Compensación de una zona horaria dada desde GMT en la secuencia de comandos de linux shell
- 3. enviando correo desde el archivo por lotes
- 4. enviando correo desde apache tomcat
- 5. secuencia de comandos de shell autodetectable
- 6. Comprueba si se invocó la secuencia de comandos bash desde una shell u otra secuencia de comandos/aplicación
- 7. En una secuencia de comandos de shell: comandos echo shell como se ejecutan
- 8. cómo buscar archivos usando regex en la secuencia de comandos de shell de linux
- 9. Enviando correo a través de sendmail desde python
- 10. Ejecutando comandos de shell desde Java
- 11. cadena concat en una secuencia de comandos shell
- 12. Enviar un correo electrónico utilizando la secuencia de comandos python
- 13. Forzar una secuencia de comandos shell para fflush
- 14. enviando un correo electrónico desde un programa C/C++ en linux
- 15. Enviando un correo electrónico desde un web2py en GAE
- 16. usando una secuencia de comandos mongo desde dentro del shell javascript?
- 17. devolver un solo valor de una función de secuencia de comandos shell
- 18. SMTP enviando un correo electrónico de prioridad
- 19. La secuencia de comandos PHP no puede obtenerse desde la secuencia de comandos de Python
- 20. Ejecutando comandos de shell desde Scala REPL
- 21. Salida detallada de la secuencia de comandos shell
- 22. Ejecutar secuencia de comandos bash bash desde Emacs
- 23. error de secuencia de comandos shell espera "hacer"
- 24. Quiere invocar un comando linux shell desde Java
- 25. Ejecutar (remota) secuencia de comandos php desde (local) secuencia de comandos pitón
- 26. Cómo ejecutar una magia de IPython desde una secuencia de comandos (o cronometrar una secuencia de comandos de Python)
- 27. obtener una lista de nombres de función en una secuencia de comandos shell
- 28. ¿Cómo ejecutar comandos de shell desde una aplicación Mac/MacRuby?
- 29. Crear una secuencia de comandos de inserción desde Seleccionar resultados
- 30. Hablando con un escáner de una secuencia de comandos PHP
Intente preguntar en Superuser [http://superuser.com/] o, mejor aún, Unix y Linux SE [http://unix.stackexchange.com/]. –
Posible duplicado de [script de Shell para enviar correo electrónico] (http://stackoverflow.com/questions/4658283/shell-script-to-send-email) –