Linux - Automatizar mails

 
Vista:
sin imagen de perfil
Val: 10
Ha disminuido su posición en 3 puestos en Linux (en relación al último mes)
Gráfica de Linux

Automatizar mails

Publicado por German (5 intervenciones) el 14/04/2021 01:44:04
Hola,

Estoy intentando crear un script .sh para que cuando llegue un archivo a un directorio envie un mail automático con dicho archivo adjunto.

Alguna idea para tirar un ls y en caso de encontrar archivos los adjunte y envie por mails? mi idea es cronear dicho script para que corra una vez al dia.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 27
Ha mantenido su posición en Linux (en relación al último mes)
Gráfica de Linux

Automatizar mails

Publicado por José Luis (9 intervenciones) el 14/04/2021 18:17:00
Hola es muy sencillo,


cacha las salidas del comando ls con la opción que quieras para determinar si hay algunos archivos nuevos.

con el comando if y fi puedes validar lógicamente el resultado.

con el crontab puedes ejecutar el script las veces que quieras al día.

Con el comando mutt puedes adjuntar archivos a un correo electrónico vía línea de comando.

¿Qué vas hacer con el archivo nuevo despues de enviarlo por correo?

¿Qué pasa si el archivo pesa mas de 60mb gb o tb ?

Te estoy orientando, después que muestres algún avance, te podemos ayudar en lo que te atores.

Saludos.
José Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Automatizar mails

Publicado por German (5 intervenciones) el 14/04/2021 18:22:39
Muchas gracias Jose Luis. Tenes algun modelo a modo ejemplo? Estoy incursionando en scripting y no tengo mucha idea de como plasmar lo que me comentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha disminuido su posición en 3 puestos en Linux (en relación al último mes)
Gráfica de Linux

Automatizar mails

Publicado por German (5 intervenciones) el 14/04/2021 19:15:31
Por el momento tengo esto, cualquier idea o corrección es bienvenida.

1
2
3
4
5
6
7
8
9
#!/bin/bash
dir=/var/sftp/compartido
mov=/var/sftp/enviado
 
for entry in "$dir"/*
        do
                cat /root/body-message.txt | mail -v -s "Mail de Prueba" -a $entry usuario@dominio.com
                mv $dir/* $mov
done
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha mantenido su posición en Linux (en relación al último mes)
Gráfica de Linux

Automatizar mails

Publicado por José Luis (9 intervenciones) el 21/04/2021 03:09:31
Hola,

Yo creo que es eso lo que necesitabas, ¿No?

¿Estás atorado con algún otro comando?


Saludos
José Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha disminuido su posición en 3 puestos en Linux (en relación al último mes)
Gráfica de Linux

Automatizar mails

Publicado por German (5 intervenciones) el 22/04/2021 18:35:25
Si, lo que estoy necesitando ahora es poner un condicional para que, en caso de que llegue un archivo al directorio /var/dir/ envie un mail, y en caso de que no llegue ningun archivo, que no haga nada. Por ahora tengo el script de esta manera, y esta croneado para correr cada 2 hs, lo cual lo hace y envia los archivos correctamente. Lo que necesito es que no envie nada en caso de que el directorio /var/sftp/compartido este en 0.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
comp=/var/sftp/compartido
mov=/var/sftp/enviado
salida=/root/ls_compartido.txt
 
if
        (ls $comp ne 0)
                then
                        printf "Se recibieron los siguientes archivos al compartido del servidor SFTP \n\n" > $salida
                        ls $comp >> $salida
                        mailx -vvv -s "Detalle de compartido" -r "sender@domain.com" receiver@gmail.com < $salida
                        gzip $comp/*
                        mv $comp/*.gz $mov
                else
                        echo "No se recibieron nuevos archivos."
fi

Entiendo que el codicional esta mal ahi pero no se como deberia ir.

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha mantenido su posición en Linux (en relación al último mes)
Gráfica de Linux

Automatizar mails

Publicado por José Luis (9 intervenciones) el 22/04/2021 21:22:57
Hola,

El siguiente comando:

1
ls $comp | wc -l

Te arroja como resultado el numero de archivos que se encuentra en el directorio especificado.

Así que podrías crear una variables con la cantidad de archivos, ejemplo:

1
count=$(ls $comp | wc -l)

y las condicionantes quedarían así:

1
2
3
4
5
6
if [ $count -eq 0 ]; then
   # instrucciones para enviar el correo.
   ...
   ...
   ...
  fi


Saludos
José Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha mantenido su posición en Linux (en relación al último mes)
Gráfica de Linux

Automatizar mails

Publicado por José Luis (9 intervenciones) el 22/04/2021 21:31:09
Hola,

Corrección dentro del if por -ne

1
2
3
4
5
6
if [ $count -ne 0 ]; then
   # instrucciones para enviar el correo.
   ...
   ...
   ...
  fi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha disminuido su posición en 3 puestos en Linux (en relación al último mes)
Gráfica de Linux

Automatizar mails

Publicado por German (5 intervenciones) el 22/04/2021 21:43:41
Perfecto! funciono, muchas gracias Jose Luis!!

Consulta, es posible que el cuerpo del mail que contiene la lista de archivos este en formato de tabla como un excel? no hablo de adjuntar la info en el mail en modo .xlsx, sino de que el mismo mail contenga la lista de archivos recuadrados como una tabla de excel. Mi idea es agregarles hora fecha y tal vez un timestamp al archivo.

Estoy googleando sobre espero no encuentro nada hasta el momento.


De nuevo, muchas gracias por tu aporte, fue de gran ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar