Si l’un des fichiers existe, envoyez une alerte par e-mail dans le script shell bash

Essayer de se moquer d’un petit script shell. Il existe déjà un processus qui crée l’un des deux fichiers (par exemple, fichier1 ou fichier2). Mon objective est de pouvoir envoyer une alerte par courrier électronique en fonction du fichier créé.

Par exemple, si fichier1 existe, envoyez un courrier électronique à John, David, Smith en indiquant que le fichier1 a été créé. Si fichier2 existe, envoyez un courrier électronique au même groupe de personnes (John, David, Smith) en indiquant que le fichier2 a été créé.

Si j’écris un simple sinon, cela fonctionnera mais je devrai répéter certaines parties du code que j’essaie d’éviter.

#!/bin/bash file="file1" if [ -f "$file1" ] then send email to three people mentioned else send email to three people mentioned saying file2 was created since it always creates two files fi } 

Ici, j’essaye de construire un script mieux et je ne veux pas répéter trois fois les commandes “send email …” car il se peut que je doive append plus de personnes à la liste à l’avenir.

S’il vous plaît aider. Merci d’avance.

Quelque chose comme

 #!/bin/bash userlist="$HOME/myusers.cfg" # one user per line function send_alert { while read -r user comment; do echo "my command to send to ${user}" echo "subject=$1" echo "Content=Hello ${comment}\n$2" done < "${userlist}" } file="file1" if [ -f "$file1" ]; then send_alert "My subject" "Content: ${file1} exists." else send_alert "My subject" "Content: ${file2} exists." fi 

J'ai ajouté un commentaire de champ facultatif dans myusers.cfg, vous pouvez donc append un commentaire après un espace (nom de la personne, quelque chose).
Vous pouvez ajuster send_alert pour plus de règles métier, comme envoyer une alerte une fois par heure, envoyer uniquement pendant les heures de travail sauf pour la personne en service de nuit, peu importe.

Vous pouvez créer un bloc fonction qui envoie un mail à une liste de personnes désirée. Appelez la fonction depuis l’un ou l’autre cas