[Script Bash] Envoyer un mail avec PJ + cron

[Script Bash] Envoyer un mail avec PJ + cron

 

OS version: Centos 6.8

 

 

Pour mon 2eme script, je cherche a envoyer un mail avec une PJ.
Chaque lundi a 9h30 il récupère des fichiers sur une machine en réseau et les envois par mail.

 

Installer le paquet mutt

$ sudo yum install mutt

 

 

Modification du fichier Muttrc pour changer le from

$ sudo vim /etc/Muttrc

 

Dé-commenter et renseigner les champs

set from="adresse mail"
set realname="nom d'utilisateur"

 

 

Modification de Postfix

$ sudo vim /etc/postfix/main.cf

 

Dé-commenter et renseigner le fichier de conf postfix

relayhost = smtp.domaine.tld

 

restart postfix

$ sudo service postfix restart

 

 

Ajouter règle dans l’Iptables

$ sudo vim /etc/sysconfig/iptables
-A OUTPUT -p tcp --dport 25 -j ACCEPT

 

 

Ouvrir également les ports smb, netbios, rpc 135,137 en TCP et UDP, 138 en UDP, 139 en TCP, et le 445 en TCP et UDP

$ sudo vim /etc/sysconfig/iptables
# RPC
-A INPUT -m state --state NEW -p TCP --dport 135 -j ACCEPT
-A INPUT -m state --state NEW -p UDP --dport 135 -j ACCEPT
-A OUTPUT -m state --state NEW -p TCP --dport 135 -j ACCEPT
-A OUTPUT -m state --state NEW -p UDP --dport 135 -j ACCEPT

# NetBios-NS
-A INPUT -m state --state NEW -p TCP --dport 137 -j ACCEPT
-A INPUT -m state --state NEW -p UDP --dport 137 -j ACCEPT
-A OUTPUT -m state --state NEW -p TCP --dport 137 -j ACCEPT
-A OUTPUT -m state --state NEW -p UDP --dport 137 -j ACCEPT

# NetBios-DGM
-A INPUT -m state --state NEW -p UDP --dport 138 -j ACCEPT
-A OUTPUT -m state --state NEW -p UDP --dport 138 -j ACCEPT

# NetBios-SSN
-A INPUT -m state --state NEW -p TCP --dport 139 -j ACCEPT
-A OUTPUT -m state --state NEW -p TCP --dport 139 -j ACCEPT

# SMB/IP
-A INPUT -m state --state NEW -p TCP --dport 445 -j ACCEPT
-A INPUT -m state --state NEW -p UDP --dport 445 -j ACCEPT
-A OUTPUT -m state --state NEW -p TCP --dport 445 -j ACCEPT
-A OUTPUT -m state --state NEW -p UDP --dport 445 -j ACCEPT

 

Redémarrer iptables et saveuvegarder

$ sudo service iptables restart
$ sudo iptables-save

 

 

Créer un script pour monter un lecteur réseau et envoyer par mail des fichiers (pdf dans mon cas)

$ sudo vim /usr/local/sbin/script_mail
#!/bin/bash
if [ ! -d "/mnt/repertoire_partage" ];then
echo "Création du répertoire de montage pour Windows";
mkdir /mnt/repertoire_partage
fi
mount //192.168.3.253/partage /mnt/c$ -o username=administrateur,password=Motdepasse
cd /mnt/partage/Documents\ and\ Settings/Administrateur/Bureau/
echo "Message dans le corps du texte " | mutt -s "Objet du message" -a *fichier_a_envoyer*.pdf -- adresse@domaine.tld
mv *.pdf archives/

/!\ Description du script

Je vérifie si le répertoire existe et je monte un lecteur réseau qui est une machine sous Windows.

J’attaque le partage administratif et je vais chercher le chemin complet.

J’envoi plusieurs fichiers avec un nom différent d’où le caractère *, puis une fois le mail envoyé je deplace les fichiers .pdf vers un répertoire archives pour que le lundi suivant il puisse répéter l’opération.

 

 

Rendre le script exécutable

$ sudo chmod +x /usr/local/sbin/script_mail

 

Puis un cron

$ crontab -e

30 9 * * * /usr/local/sbin/script_mail

 

 

Rappel sur le cron
*(minutes 0-59) ou */(toutes les x minutes 0-59)
*(heures 0-23)
*(jours du mois 1-31)
*(mois 1-12)
*(jours de la semaine 0 a 6 -> 0=dimanche ou 1 a 7 -> 1=lundi)

 

No votes yet.
Please wait...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.