Bash脚本通过电子邮件发送特定文件夹中的所有JPG文件

时间:2013-08-13 11:55:27

标签: bash ubuntu motion

我在Raspberry Pi(Ubuntu)上使用软件Motion连接到我的网络安全摄像头。当本相机检测到移动时,它会每秒将JPG转储到此Ubuntu机器上的/ tmp / camera文件夹中。

Motion允许您在每张照片保存后(每秒一次)或在移动停止后(在所有照片结束时)运行自定义Bash脚本。

我想要的是将这些图像发送到我的手机(最终也将它们FTP)。目前,我正在使用该选项在每个图片保存上运行脚本,使用Ubuntu上的“mail”附加最近保存的文件。这不能很好地工作,因为一个'运动'可能有10个图像帧,这意味着我会收到10个不同的电子邮件。

此当前脚本只是:on_picture_save echo "Motion Detected at %Y-%m-%d %T" | mail -a %f -s "Subject user@example.com

所以我想我需要一个自定义的Bash脚本,我设置为在检测到的动作结束时运行。它需要附加来自给定文件夹的所有JPG(不是压缩或我无法在我的移动电子邮件客户端上看到它们),然后通过电子邮件将它们发送到给定的地址。

有没有办法遍历给定文件夹中的所有JPG并附加到单个电子邮件?是否有可能确保nullmailer或mail实际发送图像之前在本地删除它们(或将它们移动到另一个文件夹以便以后删除)

同一个脚本可以同时ZIP和ftp这组图像吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

这是一个可能对您有帮助的非现场答案:http://johnstanfield.com/?p=683

虽然该页面的作者确切地知道他想在他的电子邮件中使用多少附件,但似乎你没有,所以他的最后答案(做一堆uuencode命令连接{{1}然后管道到&&)可能不是最适合你的。但看看他的第二个答案:

mail

您可以使用uuencode file1 first_file >> uu.txt uuencode file2 second_file >> uu.txt cat uu.txt | mail -s "a bunch of files" me@mydomain.com rm uu.txt 循环轻松替换前两行,并为for中的每个文件创建uu.txt

/tmp/camera

至于拉链,这也很容易实现:

for file in `ls /tmp/camera`; do
  uuencode $file dummyname >> attachments.txt
done

cat attachments.txt | mail -s "Motion Capture Images" me@mydomain.com

由于其交互性,FTP可能会有点困难。我没有多少经验,所以我只想指出你:http://kb.iu.edu/data/afqg.html