GNU/Linux >> Tutoriales Linux >  >> Linux

Enviar un correo desde un script de shell de Linux

Si desea un enfoque limpio y simple en bash, y no desea utilizar cat , echo , etc., la forma más sencilla 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.


Si se están ejecutando tanto exim como ssmtp, es posible que tenga problemas. Entonces, si solo desea ejecutar un MTA simple, solo para tener un cliente smtp simple para enviar notificaciones por correo electrónico para insistir, debe purgar el MTA preinstalado eventualmente como exim o postfijo primero y reinstale ssmtp.

Entonces es bastante sencillo, configurando solo 2 archivos (revaliases y ssmtp.conf) - Ver ssmtp doc - , y el uso en su script bash o 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 olvide abrir la salida de su firewall al puerto smtp (25).


Otra opción para 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 se sobrescribe cada vez que 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.

Si el servidor está bien configurado, por ejemplo, tiene un MTA en funcionamiento, puede usar el comando de correo.

Por ejemplo, para enviar el contenido de un archivo, puede hacer esto:

$ cat /path/to/file | mail -s "your subject" [email protected]

man mail para más detalles.


Linux
  1. Envíe un correo electrónico desde la terminal o secuencia de comandos de Linux usando el comando de correo

  2. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  3. Envío de correo HTML usando un script de shell

  4. Ejecute un script canalizado desde stdin (Linux/Shell Scripting)

  5. Agregue una línea al archivo /etc/hosts con script de shell

Directorio tmp de Linux:todo lo que necesita saber

Agregar usuarios a sudoers a través de un script de shell

¿Cómo insertar una nueva línea en el script de shell de Linux?

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

linux shell wc -c cuenta caracteres +1

Lectura de correo desde /var/spool/mail/root