J'ai essayé plusieurs fois de tester mon script, mais sans succès. Voici le script:
zenity --question --text "my text"
if [ $? -eq 1 ]; then
zenity --warning --text "my text"
else
ping -n -c1 192.168.180.112
# print result (0 se existir)
echo $?
if [ $? -eq 0 ]; then
scp -r ~/Documents/Processo/CONCLUIDO/* [email protected]:/home/posto-ensaios/Documents/Processo
fileName=$(inotifywait -e moved_from /home/posto-11v/Documents/Processo/CONCLUIDO | sed -r 's/^.*MOVED_FROM(,ISDIR)*\s+(.*)$/\2/g')
mail -s "$fileName" [email protected] < ~/Documents/personaproject/Programa/scripts/mail.txt
mv --backup ~/Documents/Processo/CONCLUIDO/* ~/Documents/personaproject/processos_terminados
zenity --info --text="my text"
else
zenity --warning --text "my text"
fi
fi
J'ai essayé de courir avec la commande sleep
avec "pipe" après sed
et de changer l'ordre des commandes. Lors de l'exécution du script dans leur terminal le problème est que inotify
attend toujours une action ...
Je dois garantir que les fichiers sont copiés, déplacés et que le $filename
est envoyé par e-mail ...
De l'aide?
Merci!
Si vous souhaitez envoyer un e-mail chaque fois qu'un fichier a été déplacé du répertoire surveillé, vous devrez configurer un processus différent en surveillant ce et l'envoi du courrier.
Pour les raisons que vous venez de décrire, peu importe où vous placez la commande inotifywait
, car la commande mv
ne fonctionne pas se produit en même temps , vous n'attraperez pas l'événement requis.
Mais si vous avez regardé le répertoire d'un autre processus, le déplacement a lieu pendant que vous regardez et vous pouvez détecter les modifications.
En s'appuyant sur exemple précédent , vous pouvez commencer avec l'exemple de script suivant.
while true
do
fileName=$(inotifywait -e moved_from /home/posto-11v/Documents/Processo/CONCLUIDO | sed -r 's/^.*MOVED_FROM(,ISDIR)*\s+(.*)$/\2/g')
mail -s "$fileName" [email protected] < ~/Documents/personaproject/Programa/scripts/mail.txt
done
Veuillez remplir les détails requis, cela fonctionne essentiellement de la même manière que l'exemple précédent.
Remarque:
Il y a quelques mises en garde, par exemple, il peut manquer certains mouvements pendant l'envoi du courrier. Cela dépend de la quantité et de la fréquence des déplacements.
voici comment c'est fait maintenant (script initial):
zenity --question --text "my text"
if [ $? -eq 1 ]; then
zenity --warning --text "my text"
else
ping -n -c1 192.168.180.112
echo $?
if [ $? -eq 0 ]; then
scp -r ~/Documents/Processo/CONCLUIDO/* [email protected]:/home/posto-ensaios/Documents/Processo
Nohup ~/Documents/personaproject/Programa/scripts/mail.sh &
sleep 1
mv --backup ~/Documents/Processo/CONCLUIDO/* ~/Documents/personaproject/processos_terminados
zenity --info --text="my text"
else
zenity --warning --text "my text"
fi
fi
puis mon nouveau script "mail.sh" pour surveiller le dossier et envoyer l'e-mail séparément:
while true
do
fileName=$(inotifywait -e moved_from /home/posto-11v/Documents/Processo/CONCLUIDO | sed -r 's/^.*MOVED_FROM(,ISDIR)*\s+(.*)$/\2/g')
mail -s "$fileName" [email protected] < ~/Documents/personaproject/Programa/scripts/mail.txt
done
Comme vous l'avez dit, il y a quelques mises en garde, s'il y a plus d'un fichier, un seul e-mail est envoyé avec le premier dossier sur le sujet. C'est une amélioration à apporter. Bien qu'il s'agisse d'un script à exécuter par l'utilisateur, environ une fois par semaine et probablement avec un seul dossier.
merci!