我有一个USB设备(POV摄像机),该设备收集大量数据并定期填充其存储空间。目标是编写一个脚本,该脚本可以:
- 监听通过USB连接的设备
- 挂载为存储设备
- 从设备下载数据
- 安全卸载设备以进行删除(下载完成后)
稍后我可以在脚本中添加使GPIO上某些引脚上的LED闪烁以指示状态的选项...
我在ubuntu和其他Linux站点上搜索了“如何从USB设备自动下载数据”,但是没有结果。谁能提供一个起点?我很喜欢从文档和示例中编写代码。
我有一个USB设备(POV摄像机),该设备收集大量数据并定期填充其存储空间。目标是编写一个脚本,该脚本可以:
稍后我可以在脚本中添加使GPIO上某些引脚上的LED闪烁以指示状态的选项...
我在ubuntu和其他Linux站点上搜索了“如何从USB设备自动下载数据”,但是没有结果。谁能提供一个起点?我很喜欢从文档和示例中编写代码。
Answers:
使用udev规则。
查找您的设备信息。
udevadm -a -p /dev/path/device/
KERNELS=="1-3"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
...
ATTRS{quirks}=="0x0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="SANDisk"
ATTRS{product}=="USB DISK"
ATTRS{serial}=="SD71011000019113"
然后为您的设备创建udev规则文件。创建规则文件时,请使用从udevinfo命令获得的信息。
/etc/udev/rules.d/99-mydevice.rules的内容
SUBSYSTEMS=="usb", ATTRS{serial}=="SD71011000019113", RUN+="/home/gurcan/sync.sh"
创建将在连接USB设备时运行的脚本
#!/bin/bash
#
rsync -avz /media/disk/photos/ /data/photos/
重新加载udev规则
udevcontrol reload_rules
测试一下。拔下/插上
如果您不喜欢udev,可以看看devmon。
它允许以下选项:
--exec-on-device DEVICE "COMMAND" Execute COMMAND after mounting DEVICE
--exec-on-label "LABEL" "COMMAND" Execute COMMAND after mounting LABEL
--exec-on-video "COMMAND" Execute COMMAND after video DVD mount
--exec-on-audio "COMMAND" Execute COMMAND after audio CD insertion
--exec-on-disc "COMMAND" Execute COMMAND after data CD/DVD mount
--exec-on-drive "COMMAND" Execute COMMAND after drive mount
--exec-on-unmount "COMMAND" Execute COMMAND after unmount
--exec-on-remove "COMMAND" Execute COMMAND after drive removal
Where the following in COMMAND will be replaced with:
%d mount point directory (eg /media/cd)
%f device name (eg /dev/sdd1)
%l label of mounted volume
Multiple --exec-on-XXX options may be used to execute multiple commands.
Other exec-on-XXX commands are ignored if exec-on-device or -label executed.
-bash: udevinfo: command not found
ssh shell 得到响应。我检查了一下man
,有一个man
条目udev
,但没有udevinfo
。我可能会尝试用udev
...来解决这个问题,尽管您的回答很有帮助,所以谢谢!我也会环顾四周udevinfo
,也许我还没有安装存储库之类的东西。