【问题标题】:Udev Rules and script issuesUdev 规则和脚本问题
【发布时间】:2015-05-21 14:31:15
【问题描述】:

所以我想制定一个 udev 规则,当我将我的 USB 密钥连接到我的计算机时,该规则会安装我的 USB 密钥,从我的计算机中获取一个文件,将其复制到我的 USB 密钥,然后卸载我的 USB。 所以我做了这样的 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 密钥,但是我的脚本不起作用,我真的不明白为什么。有人可以向我解释吗?谢谢

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

./ScriptCopy

有效!所以我的 udev 规则一定有问题。

编辑 2: 我发现了一些非常奇怪的东西(至少,我根本不明白),如果我在香蕉派上的 GUI (XFCE) 上插入我的 USB 密钥,我的规则就有效。但我正在使用 ssh,所以通常我不会打开 GUI。我想做的是,用 ssh 运行一些命令,触发我的 python 脚本,然后我每两天用我的 USB 密钥获取数据。但是当我在香蕉派不在 GUI 上的情况下插入我的 USB 时(当我使用 ssh 从另一台计算机触发我的脚本时),它不会将数据传输到我的 USB 密钥。不知道能不能理解。

编辑 3: 好的,我的 UDEV 规则中有路径错误,因为在 ssh 上,我不在同一个用户中。我要结束话题了。

【问题讨论】:

  • 为什么要以done 语句结束脚本?据我所知,这定义了您没有的循环的结束。使用exit 0 退出脚本。 0 定义成功执行。虽然这可能无法解决您的问题。
  • 是的,你说得对!我的错,但是它也不能解决我的问题。
  • 没有错误信息?另外,您可以在顶部使用#!/bin/bash 吗?要查看调试模式,请在您的 cp 命令之前使用 set -vx。您是否在 USB 上创建了 database/ 目录?最后,如果您在 MS Windows 附近的任何地方创建了脚本,请执行dos2unix ScriptCopy。祝你好运。
  • 我忘了说,但我正在研究bananian(香蕉派的debian)。是的,我的 USB 上有这个目录。感谢您的回答!

标签: shell usb udev


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-01-04
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多