昨天测试的时候发现发送邮件的脚本还是有问题,发送邮件不成功。问题在于在成功获取了TIME之后,使用$DIRC*$TIME.avi没有办法准确定位到文件,我本来发现文件命是01-time.avi,于是把发送的文件名改成了$DIRC"01-"$TIME.avi,能够成功发送,但是运行时间长的时候你就会发现他的序号不是只有01的,于是就开始想办法获取他的完整文件名,这样发送就不会有问题了。想到ubuntu下查找文件的命令find,根据这个修改了脚本,最终成功发送,脚本如下:
on_motion_end:
#!/bin/bash
echo "111111111111111on_motion_end1111111111111111"
DIRC="/root/motion/snapshots/"
VIDEOTIME="/root/tmp/videotime"
TIME=$(cat $VIDEOTIME)
echo $TIME
ALARM_EMAIL="/root/tmp/myalarm.txt"
echo "Subject: Motion detected - $TIME - $DIRC" > $ALARM_EMAIL
echo "">> $ALARM_EMAIL
echo "Motion detected - check 01-$TIME.avi">>$ALARM_EMAIL
MAILBODY=$(cat $ALARM_EMAIL)
echo $MAILBODY
#first trying of sending the avi video
echo $MAILBODY
FILE=$(find $DIRC -name *$TIME.avi*)
echo $FILE
echo $DIRC*$TIME.avi*
#echo $MAILBODY | mutt -s $TIME -a $DIRC"01-"$TIME.avi xxx@gmail.com
echo $MAILBODY | mutt -s $TIME -a "$FILE" -- xxx@gmail.com< "/root/aaa.txt"
#second trying of sending the avi video
TIME=$(expr $TIME - 1)
echo $TIME
FILE=$(find $DIRC -name *$TIME.avi*)
echo $FILE
#echo $MAILBODY | mutt -s $TIME -a $DIRC*$TIME.avi* xxx@gmail.com
echo $MAILBODY | mutt -s $TIME -a "$FILE" -- xxx@gmail.com< "/root/aaa.txt"
注意shell下面单引号‘ ’里面的变量是不被替换的,所以FILE=$(find $DIRC -name *$TIME.avi*)这里不要写成FILE=$(find $DIRC -name ’*$TIME.avi*‘),使用双引号是可以的。关于/root/aaa.txt这个你建一个文件就可以了,实际上没什么内容,可以是任何文件名。现在你就可以成功发送移动监测视频到你的邮箱了。