我尝试测试我的脚本几次,但都没有成功。这是脚本:
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
命令后面加上“pipe”sed
并更改命令的顺序。在终端中运行脚本时问题是inotify
总是在等待一个动作......
我需要保证文件已被复制、移动并$filename
通过电子邮件发送......
有什么帮助吗?
谢谢!
答案1
如果你希望每次文件从监视目录中移动时都发送邮件,你需要设置不同的流程监控此事并发送邮件。
出于你刚才描述的原因,你把命令放在哪里并不重要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
请填写所需的详细信息,其工作原理与前面的示例基本相同。
笔记:
有几个注意事项,例如,在发送邮件时可能会错过一些动作。这取决于动作的数量和频率。
答案2
现在的操作如下(初始脚本):
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
就像您说的,有一些注意事项,如果有多个文件,则只会发送一封电子邮件,其中包含有关该主题的第一个文件夹。这是需要改进的。虽然这是一个由用户执行的脚本,但大约每周执行一次,并且可能只有一个文件夹。
谢谢!
答案3
zenity --warning --text "my text" &
作为后台命令运行,非阻塞