当你连接网络摄像头等 USB 设备时,它会通知我它是否工作,这很好。
答案1
令我惊讶的是,在 2014 年我们仍然没有默认启用此功能。似乎很少有人需要这个功能,但我真的需要它。
首先,我发现udev 通知包,但不幸的是它对我来说几乎不起作用:它工作的时间很短(1-2 分钟),然后,如果我连接/断开任何设备,它就会崩溃:
Traceback (most recent call last):
File "./udev-notify.py", line 319, in <module>
notification.show()
glib.GError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name :1.1061 was not provided by any .service files
我还没有找到任何解决方案,所以我不得不删除它。(归档错误报告还)
到目前为止,我还没有找到类似的实用程序。所以我不得不自己实现解决方案,这可能不是很好,但对我来说很有效:它会通过声音和视觉通知通知我任何我插入/拔出的设备。设备标题通过 接收lsusb
,这样如果我插入某个未知设备,至少我可以看到它的vendor_id:product_id
。我喜欢它。
它看起来像这样:
安装详细信息。
已经在 Ubuntu 12.04、Xubuntu 12.04、Xubuntu 13.04、Linux Mint 13 上测试过。我相信它应该可以在其他 Ubuntu 衍生产品上运行,并且我希望它可以在任何装有 的 *nix 系统上运行udev
。
- 去项目页面,从那里获取源代码并将它们放在某处。其中只有一个主脚本:
my-udev-notify.sh
,但存档还包含插入/拔出通知的声音,以及更多信息,请参阅readme.txt
了解详情。 - 创建
/etc/udev/rules.d/my-udev-notify.rules
包含以下内容的文件:(不要忘记将路径修改为您解压的实际路径my-udev-notify.sh
!)
ACTION=="add", RUN+="/bin/bash /path/to/my-udev-notify.sh -a add -p '%p' -b '$attr{busnum}' -d '$attr{devnum}'"
ACTION=="remove", RUN+="/bin/bash /path/to/my-udev-notify.sh -a remove -p '%p' -b '$attr{busnum}' -d '$attr{devnum}'"
此后,它应该适用于新连接的设备。也就是说,如果您拔下某个设备,您将不会收到通知。但是当您将其重新插入时,您会收到通知。(是的,对我来说,它无需重新启动 udev 即可工作。如果您不这样做,请尝试重新启动)
要使其适用于所有设备,只需重新启动系统即可。请注意,首次启动时可能会出现许多通知(请参阅中的已知问题readme.txt
)。第二次启动时将不会出现任何通知(除非您在系统关闭时插入新设备)
您可以自定义它(打开/关闭视觉和声音通知,或更改声音),请查看存档中的 readme.txt 了解详情。
答案2
这libnotify-bin该软件包包含一个二进制文件,通知发送显示通知。以下是调用它的示例:
通知发送“新的 USB 设备已连接”“新设备已连接:blah blah blah”
我相信您可以为“添加”和“删除”操作制定一条 udev 规则,以触发一个可以调用通知的小脚本。我还没有研究过这个问题,但我见过类似的脚本调用存储设备的加密/安装命令。
Guadalinex 项目也具有这种功能[1],他们在 2005 年的 UDS 塞维利亚上进行了演示 (!),如果他们将他们的工作提交到上游或者将其作为单独的软件包提供,也许会更容易追踪。不要安装 Debian 漏洞中提到的软件包我引用的是,如果有人决定研究它,这仅供参考。
答案3
gnome-panel 有一些小程序可以让你查看插入的设备并让你弹出它们。例如喷射器这是一个小程序,可让您查看已安装的可移动设备并弹出它们。KDE 有一个超酷的通知系统,可让您查看最近插入了哪些设备。您可以尝试使用系统盘命令检查您的设备是否已被检测到。如果您喜欢冒险,您可以编写自己的 udev 规则。
答案4
我不相信目前有这样的通知,(而且现在我甚至似乎不记得在哪里设置通知)我相信让计算机判断网络摄像头是否正常工作可能非常困难。
当您插入 USB 设备时,它通常会出现在您的桌面上,我相信您必须使用您计划与网络摄像头一起使用的程序来确定网络摄像头是否真的有效。
比如说 skype,您可以进行测试看看它是否有效,而无需致电任何人(选项 - 视频设备 - (很明显(如果我记得正确的话)))
我希望这回答了你的问题 :-)