在连接USB设备上运行脚本
请不要将此标记为重复,因为这是一个不同的问题!
每当pendrive连接到我的系统时,我都会尝试运行脚本。 我跟着这个和这个问题并且它正在工作但仍然存在一些问题。
这是我的udev规则文件:
ACTION=="add", ATTRS{idVendor}=="8564", ATTRS{idProduct}=="1000", RUN+="/usr/local/my_script.sh"
这是我的脚本:
#!
/斌/庆典
env> /tmp/env.out
cp -r / media / * device-name * / *〜/ test /
我有两个问题:
1.当我插入我的USB设备脚本时执行因为在/ tmp中生成了文件env.out但是来自usb设备的数据没有被复制到测试目录中 ,如果我手动运行脚本那么它工作正常! 为什么??
2.如何使我的规则文件更通用,以便它可以在任何连接的USB设备上工作而不知道它的ID?
我的想法是在连接时自动将连接的USB设备中的所有数据复制到我的计算机。
提前致谢!
回答我自己的问题:
1.Script没有运行,因为它需要sudo
权限才能运行..
解决方案:
使这个脚本sudo
可执行!
编辑sudoers文件使用
sudo visudo
第25行(即%sudo ALL=(ALL)
)添加此项
username ALL=(ALL) NOPASSWD: /home/username/my_script.sh
现在我们可以在这个脚本中使用sudo
而不需要sudo密码
但它可能会导致一些安全问题,所以请参考此链接
2.回答第二个问题:
要使此脚本适用于任何已连接的USB设备 ,请将规则文件更改为此
ACTION=="add", ATTRS{idVendor}=="
****
", ATTRS{idProduct}==" ****
", RUN+="/usr/local/my_script.sh"
asterik(*)告诉我们应该为每个连接的USB设备做到这一点!
而已! 确保脚本可执行并插入USB!
请享用!
尝试使用主目录的完整路径替换代字号。 我不知道这是否会起作用,但是你说当你直接运行它时脚本会起作用但是当它自动运行它不会:这让我觉得问题可能与它由不同的运行有关用户自动运行时,波形符号会针对不同的用户解析为不同的值。
看看这个, 墨鱼 。