2015-05-21 67 views
0

因此,我想制定一个udev规则,当我将我的USB密钥连接到我的计算机时,规则会挂载我的USB密钥,从我的计算机获取文件,将其复制到我的USB密钥,然后卸载我的USB。 所以,我做我的udev规则这样的:Udev规则和脚本问题

ACTION=="add" SUBSYSTEM=="BLOCK", ENV{ID_VENDOR_ID}=="0718", ENV{ID_MODEL_ID}=="0618", ENV{ID_SERIAL_SHORT}=="CB00524932077759", RUN+="/bin/mount /dev/sda1 /media/usb" 
ACTION=="add" SUBSYSTEM=="BLOCK", ENV{ID_VENDOR_ID}=="0718", ENV{ID_MODEL_ID}=="0618", ENV{ID_SERIAL_SHORT}=="CB00524932077759", RUN+="/bin/ScriptCopy" 

,我写了一个脚本,位于/ bin,称为ScriptCopy:

#!/bin/sh 

cp /root/average.db /media/usb/database/average.db 

ldconfig 

echo "Done!" 
exit 0 

所以我udev规则的第一部分工作,它挂载USB键,但然后我的脚本不起作用,我不明白为什么。有人可以向我解释吗? THX

编辑1: 当我运行我的脚本在终端,做

./ScriptCopy 

它的作品!所以我必须在我的udev规则中遇到问题。

编辑2: 我发现了一些非常奇怪的东西(至少,我根本不懂),我的规则在我插入USB密钥时运行,而我在香蕉上的GUI(XFCE) PI。但是我正在使用ssh,所以我不打开GUI。我想要做的是,用ssh运行一些命令,触发我的python脚本,然后每隔两天使用我的usb键一次数据。但是当我插入usb而banana pi不在GUI上时(当我使用ssh从另一台计算机上触发我的脚本时),它不会将数据转移到我的USB密钥。我不知道这是否可以理解。

编辑3: 好,我有路径的错误在我的udev规则,因为SSH的,我是不是在同一个用户。我正在关闭这个话题。

+1

为什么用'done'语句结束脚本?据我所知,这定义了一个循环的结束,这是你没有的。使用'exit 0'退出脚本。 '0'定义成功执行。尽管这可能无法解决您的问题。 – ShellFish

+0

是的,你是对的!我的不好,但是它并没有解决我的问题。 –

+1

没有错误信息?另外,你可以在顶部使用'#!/ bin/bash'吗?要查看调试模式,请在'cp'命令之前使用'set -vx'。你有没有在你的USB上创建你的'database /'目录?最后,如果您在MS Windows附近的任何位置创建脚本,请执行'dos2unix ScriptCopy'。祝你好运。 – shellter

回答

0

我发现我的脚本/ udev规则中有路径错误。