Archivo etiqueta Scripting
Cómo enviar correos desde la línea de comandos en Perl – II
Por Ángel Carrasco - GNU/Linux - 14/02/2012
Esta entrada es una continuación de la anterior entrada. En vez de escribir nosotros mismos el cuerpo del mensaje, es nuestro programa quien lo carga a través de la entrada estándar.
#!/usr/bin/perl -w
$TO = $ARGV[0];
$SUBJECT = $ARGV[1];
@auxMSG = <STDIN>;
# Extraemos el contenido de la rediccion
$MSG="";
foreach $tmpMSG (@auxMSG) {
$MSG = $MSG . $tmpMSG;
}
# Solo debug
#print "TO: " . $TO . "\n";
#print "SUBJECT: " . $SUBJECT . "\n";
#print "MSG:\n" . $MSG . "\n";
# Enviamos el correo
open (MAIL,"|/usr/lib/sendmail -t");
print MAIL "To: ". $TO . "\n";
print MAIL "From: servidor\@dominio.com\n";
print MAIL "Subject: " . $SUBJECT . "\n\n";
print MAIL $MSG . "\n";
close(MAIL);
exit(1);
Espero que os sea de utilidad.
Cómo enviar correos desde la línea de comandos en Perl – I
Por Ángel Carrasco - GNU/Linux - 14/02/2012
Siempre tenemos algún servicio que necesita poder enviar un correo para avisarnos de alguna incidencia. Lamentablemente en algunos *ix comerciales, tienen la mala costumbre de tener algunos comandos antidiluvianos cuyas interdependencias con servicios modificados por el fabricante, hace que no siempre funcione como queramos.
Como este tipo de cosas no debe detenernos en nuestra labor de administración, os propongo este simple script en Perl que espero os sea útil.
Por cierto, como estoy más que cansado que no se pueda enviar más de una línea, en especial, cuando requerimos más información para realizar un troubleshooting, el script permite enviar diferentes líneas de texto.
#!/usr/bin/perl -w
# Salgo si no me llegan todos los parametros
$num_args = $#ARGV + 1;
if ($num_args != 3) {
print "\nUso: enviar_correo.pl TO SUBJECT MSG.\n";
print "TO: Destinatario o destinatarios unidos por coma.\n";
print "SUBJECT: Asunto del correo electronico entre dobles comillas.\n";
print "MSG: Cuerpo del mensaje entre comillado doble y \\n para los retornos de carro.\n\n";
exit;
}
# Convertimos nuestro retorno de carro en un verdadero retorno de carro
$MSG =~ s/\\n/\n/g;
# Solo debug
#print "TO: " . $TO . "\n";
#print "SUBJECT: " . $SUBJECT . "\n";
#print "MSG:\n" . $MSG . "\n";
# Enviamos el correo
open (MAIL,"|/usr/lib/sendmail -t");
print MAIL "To: ". $TO . "\n";
print MAIL "From: servidor\@dominio.com\n";
print MAIL "Subject: " . $SUBJECT . "\n\n";
print MAIL $MSG . "\n";
close(MAIL);
exit(1);
Esta es una forma de hacerlo, si tienes una mejor, compártela con nosotros y entre todos podemos aprender.

