スクリプトを何度かテストしてみましたが、成功しませんでした。これはスクリプトです:
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
sleep
の後に「パイプ」を付けてsed
コマンドを実行し、コマンドの順序を変更しようとしました。端末でスクリプトを実行すると問題はinotify
が常にアクションを待機し続けることです...
ファイルがコピー、移動され、$filename
がメールで送信されることを保証する必要があります...
何か助けは?
ありがとうございます。
監視対象のディレクトリからファイルが移動されるたびにメールを送信する場合は、別のプロセスを設定するこれを監視する必要がありますメールを送信します。
今説明した理由から、inotifywait
コマンドは同時に発生しないため、mv
コマンドをどこに配置しても問題ありません、必要なイベントをキャッチしません。
ただし、別のプロセスからディレクトリを監視している場合は、監視中に移動が行われ、変更を検出できます。
前の例 に基づいて構築すると、次のサンプルスクリプトから始めることができます。
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
必要な詳細を入力してください。基本的には前の例と同じです。
注:
いくつかの注意点があります。たとえば、メールの送信中に一部の動作を見逃す可能性があります。移動の量と頻度によって異なります。
これが今どのように行われるかです(初期スクリプト):
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
次に、フォルダを監視してメールを個別に送信するための新しい「mail.sh」スクリプト:
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
あなたが言ったように、いくつかの注意点があります。複数のファイルがある場合、件名の最初のフォルダーで送信されるメールは1つだけです。これは改善すべき点です。これはユーザーが実行するスクリプトですが、約1週間に1回、おそらく1つのフォルダーのみで実行されます。
ありがとう!