在连接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!

请享用!

尝试使用主目录的完整路径替换代字号。 我不知道这是否会起作用,但是你说当你直接运行它时脚本会起作用但是当它自动运行它不会:这让我觉得问题可能与它由不同的运行有关用户自动运行时,波形符号会针对不同的用户解析为不同的值。

看看这个, 墨鱼 。