Bash 脚本可手动执行,但只能部分通过 udev 规则执行

Bash 脚本可手动执行,但只能部分通过 udev 规则执行

我在 Ubuntu 18.04 LTS 上,我编写了一个脚本,当有人从我的计算机上移除 USB 设备时,拍照并使用 ssmtp 发送电子邮件。

udev 规则运行良好并执行脚本,但只有“拍照”部分有效,而电子邮件发送无效。

当我自己在终端中执行脚本时,一切都很顺利,可以拍照,可以发送电子邮件。但当它被 udev 规则触发时,它就不起作用了。

规则:

ACTION=="remove", SUBSYSTEM=="usb", RUN+="/home/jensen/Documents/script.sh"

剧本:

#!/bin/bash

cd /home/jensen
fswebcam -r 640x480 --jpeg 85 webcamshot1.jpg
fswebcam -r 640x480 --jpeg 85 webcamshot2.jpg
fswebcam -r 640x480 --jpeg 85 webcamshot3.jpg

echo "Subject: test mail" | /usr/sbin/sendmail -v [email protected]

和 ssmtp 配置:

root=**********@gmail.com
mailhub=smtp.gmail.com:587
hostname=jensen
AuthUser=**********@gmail.com
AuthPass=**********
UseSTARTTLS=yes
UseTLS=yes
FromLineOverride=yes

我尝试使用 chmod 更改脚本文件的权限,但没有任何作用。可能是什么问题?

相关内容