Cómo generar automáticamente y enviar por correo electrónico las estadísticas de la computadora
Es importante revisar 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 aspectos destacados cada día, por lo que ni siquiera necesita acceder al servidor para verificar si hay problemas? Esta guía le mostrará cómo configurar correos electrónicos automatizados en Linux y Windows.
Cubriremos esto específicamente 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 instálalos con el siguiente comando:
$ sudo apt-get install ssmtp mailutils
Una vez que están instalados, debemos realizar algunos cambios en el archivo de configuración SSMTP:
$ sudo vi /etc/ssmtp/ssmtp.conf
Edite el archivo con estos cambios (es seguro simplemente borrar todo el texto del archivo y copiar / pegar estas configuraciones, si lo desea):
# Esta dirección recibirá los correos electrónicos, así que ingrese su propio correo electrónico aquí si desea recibirlos.
# Especifique el servidor de correo electrónico aquí (déjelo como está si está usando Gmail).
mailhub = smtp.gmail.com: 587
# El nombre de dominio del que provendrá el correo..
rewriteDomain = gmail.com
# La dirección de correo electrónico desde la que deben estar estos correos..
nombre de host = nombre de [email protected]
# Configuración SSL / TLS, requerida para Gmail y la mayoría de los otros servidores de correo.
UseTLS = Sí
UseSTARTTLS = Sí
# El nombre de usuario y contraseña de tu cuenta de Gmail..
AuthUser = nombre de usuario
AuthPass = contraseña
# Permitir la capacidad de especificar una dirección de origen 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 sin formato.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ssmtp.conf
Siempre es más seguro hacer que el propietario del archivo sea root, pero luego tendríamos que usar el comando sudo en nuestro script y nos solicitará una contraseña, lo que anulará el propósito de automatizar todo este proceso.
Si está utilizando un servidor compartido y le preocupa que su contraseña se almacene en texto plano y sea legible por la raíz, 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 "Pruebas" | mail -s "Configuración del correo de prueba" [email protected]
"Pruebas" estará en el cuerpo del correo electrónico y el asunto será "Pruebas de configuración de correo". Revise 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:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# Listar los usuarios que han iniciado sesión
echo "Usuarios conectados actualmente:" >> /home/geek/email.txt
quien >> /home/geek/email.txt
# Lista de procesos actualmente en ejecución
echo "Procesos en ejecución:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Enviar el correo electrónico
cat /home/geek/email.txt | mail -s "Información diaria del servidor" [email protected]
# Eliminar el archivo que creamos
rm /home/geek/email.txt
Obviamente, puedes obtener mucho más en profundidad con tu script e incluso hacer que el formato sea un poco más agradable, pero así es como se ve la salida 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 am cada mañana, para que podamos revisar los datos ese mismo día..
$ crontab -e
Para correos electrónicos a las 2:00 AM, agregue:
0 2 * * * /home/geek/script.sh
Hemos escrito un artículo completo sobre los 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 hemos encontrado que implementar esta funcionalidad es mucho más fácil con aplicaciones de terceros, especialmente cuando se usa Gmail. SendEmail es un programa gratuito disponible para Windows que facilita la integración con el Programador de tareas de Windows 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 el contenido en un lugar donde pueda almacenarlos durante el tiempo que planee enviar correos electrónicos automatizados. En este ejemplo, solo vamos a almacenar el programa en C: \ SendEmail
Probemos 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 indicador de comandos abierto, use el comando cambiar directorio para navegar hasta donde almacenó los archivos de 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 -xp contraseñ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:
enviar correo electrónico
ejecuta el programa.
-F
- de la Dirección
-t
- dirigirse
-s
- servidor SMTP
-xu
- nombre de usuario
-xp
- contraseña de la cuenta
-tu
- asunto del email
-metro
- texto del cuerpo del correo electrónico
Revise su bandeja de entrada para asegurarse de que recibió el correo electrónico de prueba, y luego podemos continuar escribiendo un script que nos enviará la información del servidor..
Escribir un script para los correos electrónicos
Para aprovechar al máximo nuestro script, lo vamos a escribir 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 es capaz de 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 llamar a programas de terceros para obtener información (es decir, SendEmail es una aplicación de terceros, pero PowerShell y cmd pueden usarla para realizar tareas que normalmente no pueden).
Para nuestra secuencia de comandos de ejemplo, comprobaremos el uso actual del disco de la unidad C, mostraremos los procesos actualmente en ejecución y mostraremos todos los archivos que actualmente se comparten a través de la red..
# Comprobar el espacio en el disco duro
echo "C: Uso del disco:"> C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" | Tamaño del objeto seleccionado, espacio libre >> C: \ SendEmail \ info.txt
# Lista de procesos actualmente en ejecución
echo "Procesos en ejecución:" >> C: \ SendEmail \ info.txt
proceso de obtención >> C: \ SendEmail \ info.txt
# Lista los archivos / carpetas que se comparten actualmente
echo "SMB shares:" >> C: \ SendEmail \ info.txt
get-smbshare >> C: \ SendEmail \ info.txt
# Enviar el correo electrónico
escriba C: \ SendEmail \ info.txt | C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -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 en ese documento se nos envía por correo electrónico antes de que se elimine. Guarde su script con una extensión de archivo ps1 (archivo PowerShell).
Con la secuencia de comandos finalizada, ejecute una prueba rápida desde un indicador de ejecución para asegurarse de que funciona correctamente.
Solo usa el potencia Shell
comando con un -expediente
argumento y especifique la ruta a su script.
archivo powershell "c: \ SendEmail \ daily-email.ps1"
Revise su bandeja de entrada para asegurarse de que recibió el correo electrónico; de lo contrario, revise su secuencia de comandos en busca de errores de sintaxis. Aquí es cómo se ve el correo electrónico generado de nuestro script de ejemplo:
Puede jugar con el formato (como hacer eco en las líneas vacías entre el texto) para que se vea mejor en su dispositivo, o mejor aún, puede usar un programa de terceros que proporcionará 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 script, 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> Crear tarea básica.
Asigne un nombre a esta tarea como "Script diario de correo electrónico" y haga clic en Siguiente En la siguiente pantalla, seleccione la frecuencia con la que desea que se ejecute su script de correo electrónico, probablemente a diario. Luego, elija la hora en que desea que se ejecute el script y pulse Siguiente.
Ahora debería estar en la parte de "Acción" del asistente, seleccione "Iniciar un programa" e ingrese el mismo texto que ingresamos en el indicador Ejecutar antes para probar nuestro script.
Presione siguiente y luego presione Sí en esta ventana:
Haga clic en Finalizar en el último menú, y habrá terminado de programar sus correos electrónicos automáticos..