11Jul
Es importante verificar varios datos de registro y estadísticas en su servidor todos los días, pero se vuelve tedioso.¿No sería agradable recibir un solo correo electrónico con todos los detalles cada día, por lo que ni siquiera necesita subir al servidor para verificar si hay algún problema? Esta guía le mostrará cómo configurar correos electrónicos automáticos en Linux y Windows.
Cubriremos específicamente esto para Ubuntu y Windows 8.1, con Gmail siendo utilizado como el servidor de correo electrónico desde el cual se envía el correo. Si tiene otra versión de Linux o Windows, o prefiere usar algún otro servicio de correo electrónico, las instrucciones aquí deben ser fácilmente adaptables.
Correos electrónicos automatizados en Linux
Vamos a usar dos paquetes diferentes para lograr esto, ssmtp y mailutils, así que instale ambos con el siguiente comando:
$ sudo apt-get install ssmtp mailutils
Una vez que estén instalados, necesitamospara realizar algunos cambios en el archivo de configuración SSMTP:
$ sudo vi /etc/ssmtp/ ssmtp.conf
Edite el archivo con estos cambios( es seguro borrar todo el texto del archivo y copiar / pegar estos ajustes, si lo desea):
# Esta dirección recibirá los correos electrónicos, así que ingrese su propio correo electrónico aquí si desea recibirlos.
# Especifique aquí el servidor de correo electrónico( déjelo como está si está usando Gmail).
mailhub = smtp.gmail.com: 587
# El nombre de dominio del que proviene el correo.
rewriteDomain = gmail.com
# La dirección de correo electrónico desde la que deben enviarse estos correos electrónicos.
# Configuración de SSL / TLS, necesaria para Gmail y la mayoría de los demás servidores de correo.
UseTLS = Sí
UseSTARTTLS = Sí
# El nombre de usuario y la contraseña de su cuenta de Gmail.
AuthUser = username
AuthPass = contraseña
# Permiten la posibilidad de especificar una dirección from diferente a la anterior.
FromLineOverride = yes
Cuando termine de editar el archivo, querrá cambiar los permisos ya que su contraseña de Gmail se almacena en texto plano.
$ sudo chmod 640 /etc/ssmtp/ ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ ssmtp.conf
Siempre es más seguro hacer root al propietario del archivo, pero luego tendríamos que usar el comando sudo en nuestro script y lo haríasolicítenos una contraseña, con lo que se frustra el propósito de automatizar todo este proceso.
Si está utilizando un servidor compartido y le preocupa que su contraseña esté almacenada en texto plano y legible por root, cree una cuenta de Gmail desechable o use un servidor de correo electrónico que no requiera ningún tipo de autenticación en primer lugar.
Para asegurarse de que todo está configurado correctamente, probemos un correo electrónico de prueba:
$ echo "Testing" |mails "Testing mail setup" [email protected]
"Testing" estará en el cuerpo del correo electrónico y el asunto será "Testing mail setup". Verifique su correo electrónico para asegurarse de que lo recibió.
Escribir un script para los correos electrónicos
Ahora que podemos enviar correos electrónicos desde la línea de comandos, escribamos un script que nos envíe información básica sobre nuestro sistema.
#!/bin/ bash
# Comprobar el espacio en el disco duro
echo "Espacio en el disco duro:" & gt;/home/geek/ email.txt
df -h & gt; & gt;/home/geek/ email.txt
# Listar los usuarios que han iniciado sesión
echo "Usuarios actualmente conectados:" & gt; & gt;/home/geek/ email.txt
que & gt; & gt;/home/geek/ email.txt
# Listar los procesos actualmente en ejecución
echo "Ejecutar procesos:" & gt; & gt;/home/geek/ email.txt
ps -e & gt; & gt;/home/geek/ email.txt
# Enviar el correo electrónico
cat /home/geek/ email.txt |mails "Daily server information" [email protected]
# Borre el archivo que creamos
rm /home/geek/ email.txt
Obviamente, puede obtener un mayor nivel de detalle con su script e incluso hacer que el formato sea un poco más agradable, peroasí es como se ve el resultado en nuestro correo electrónico:
Ahora que el script está escrito y probado, podemos usar cron para ejecutarlo automáticamente a la misma hora todos los días. En este ejemplo, configuraremos el correo electrónico que se enviará a las 2:00 a.m. todas las mañanas, de modo que podamos revisar los datos más tarde ese mismo día.
$ crontab -e
Para correos electrónicos de 2:00 AM, agregue:
0 2 * * * /home/geek/ script.sh
Hemos escrito un artículo completo sobre archivos crontab si necesita más ayuda con esta parte.
correos electrónicos automatizados en Windows
El envío de correos electrónicos en la línea de comandos es posible a través de PowerShell, pero descubrimos que la implementación de esta funcionalidad es mucho más fácil con aplicaciones de terceros, especialmente cuando se utiliza Gmail. SendEmail es un programa gratuito disponible para Windows que facilita enormemente la integración con Windows Task Scheduler y Gmail. Haga clic en el enlace de arriba para descargar la última copia y asegúrese de obtener la versión compatible con TLS.
Una vez que haya descargado SendEmail, extraiga el archivo zip y coloque los contenidos en algún lugar donde pueda almacenarlos mientras tenga previsto enviar correos electrónicos automáticos. En este ejemplo, solo vamos a almacenar el programa en C: \ SendEmail
Vamos a probar SendEmail para tener una idea rápida de cómo funciona. Abra un símbolo del sistema escribiendo cmd en el menú Inicio o Ejecutar( Ctrl + R).
Con el símbolo del sistema abierto, use el comando cambiar directorio para navegar hasta donde guardó los archivos SendEmail.
cd C: \ SendEmail
Ahora podemos intentar enviar un correo electrónico de prueba con el siguiente comando:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -xpcontraseña -u "Asunto del correo electrónico de prueba" -m "Este es un correo electrónico de prueba".
Obviamente, reemplace "nombre de usuario" y "contraseña" con las credenciales de su cuenta antes de ejecutar el comando.
Esto es lo que realmente hace el comando anterior:
sendEmail ejecuta el programa.
-f - de la dirección
-t - para la dirección
-s - servidor SMTP
-xu - nombre de usuario de la cuenta
-xp - contraseña de la cuenta
-u - asunto del correo electrónico
-m - correo electrónico cuerpo del texto
Revise su bandeja de entrada para asegurarseusted recibió el correo electrónico de prueba, y luego podemos pasar a escribir un script que nos enviará información del servidor.
Escribiendo un script para los correos electrónicos
Para sacar el máximo provecho de nuestro script, vamos a escribirlo para PowerShell. Abra Windows PowerShell ISE escribiendo powershell_ise.exe en un indicador de ejecución( Ctrl + R).
En el lado derecho de la ventana de PowerShell ISE, puede enumerar todos los comandos que PowerShell puede ejecutar. Esto debería darle un buen comienzo para generar los tipos de información que necesita informar. En su secuencia de comandos, también puede recurrir a programas de terceros para generar información( por ejemplo, SendEmail es una aplicación de terceros, pero PowerShell y cmd pueden usarla para realizar tareas que normalmente no pueden).
Para nuestro script de ejemplo, verificaremos el uso actual del disco de la unidad C, mostraremos los procesos que se están ejecutando actualmente y mostraremos todos los archivos que se están compartiendo actualmente a través de la red.
# Compruebe el espacio en el disco duro
eco "C: Uso de la unidad:" & gt;C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" |Tamaño de objeto seleccionado, FreeSpace & gt; & gt;C: \ SendEmail \ info.txt
# Listar los procesos actualmente en ejecución
echo "Ejecutar procesos:" & gt; & gt;C: \ SendEmail \ info.txt
get-process & gt; & gt;C: \ SendEmail \ info.txt
# Listar los archivos / carpetas que se están compartiendo actualmente
echo "SMB shares:" & gt; & gt;C: \ SendEmail \ info.txt
get-smbshare & gt; & gt;C: \ SendEmail \ info.txt
# Enviar el correo electrónico
tipo C: \ SendEmail \ info.txt |C: \ EnviarEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu nombre de usuario -xp contraseña -u "Información diaria del servidor"
# Eliminar el archivo que hicimos
rm C: \ SendEmail \ info.txt
En esta secuencia de comandos, se envía información diversa a C: \ SendEmail \ info.txt, y luego el texto de ese documento se envía por correo electrónico a nosotros antes de que se elimine. Guarde su secuencia de comandos con una extensión de archivo ps1( archivo de PowerShell).
Con la secuencia de comandos finalizada, ejecute una prueba rápida desde un indicador de ejecución para asegurarse de que funciona correctamente.
Simplemente use el comando powershell con un argumento -file y especifique la ruta a su script.
powershell -file "c: \ SendEmail \ daily-email.ps1"
Revise su bandeja de entrada para asegurarse de que recibió el correo electrónico; de lo contrario, revise el script para ver si hay errores de sintaxis. Así es como se ve el correo electrónico generado de nuestro script de ejemplo:
Puede jugar con el formato( como repetir líneas vacías entre el texto) para que se visualice mejor en su dispositivo, o mejor aún, puede usar un programa de terceros que lo hagamuestra la información necesaria en un formato más legible que Windows( el proceso de scripting seguirá siendo el mismo).
Una vez que haya resuelto los problemas en su secuencia de comandos, puede usar el Programador de tareas de Windows para automatizarlo. Abra el Programador de tareas de Windows a través del menú Inicio.
Con el Programador de tareas abierto, seleccione Acción & gt;Crear Tarea Básica.
Nombre esta tarea como "Script de correo electrónico diario" y haga clic en siguiente. En la pantalla siguiente, seleccione la frecuencia con la que desea que se ejecute el script de correo electrónico, probablemente a diario. Luego, elija la hora a la que desea que se ejecute la secuencia de comandos y pulse Siguiente.
Ahora debe estar en la parte de "Acción" del asistente, seleccionar "Iniciar un programa" e ingresar el mismo texto que ingresamos en el indicador Ejecutar antes para probar nuestro script.
Pulse siguiente y luego pulse Sí en esta ventana:
Haga clic en Finalizar en el último menú y termine de programar sus correos electrónicos automáticos.