当使用 udev 规则(RUN 命令)插入 USB 设备并使用 notify-send 显示通知时,我正在运行脚本。
我希望它提示用户向 USB 输入一些输入。我该怎么做?
当使用 udev 规则(RUN 命令)插入 USB 设备并使用 notify-send 显示通知时,我正在运行脚本。
我希望它提示用户向 USB 输入一些输入。我该怎么做?
由于 udev 不知道您正在运行的 X 会话,因此 udev 不知道要发送给谁,并且 X 可以运行不止一个活动会话。为了使 Zenity 类型的脚本正常工作,您还需要来自当前正在运行的 X 会话的 X-Auth cookie。现在从家更改为临时位置,您将没有修复脚本来破解它。
有很多方法可以做你需要的,但这取决于你想做多少工作。
notify-send 只显示信息,所以它不起作用。像上面的建议一样,您需要 zenity 或 kdialog 类型的输入。但更重要的是,您需要当前会话,因此您可能希望将脚本与 gnome-session-properties 挂钩。这样,您的挂钩将在您每次登录时运行。
这只是挂钩 gnome-session-propoties 的一种方式
#!/bin/sh
mkfifo /tmp/usb_notify
mkfifo /tmp/usb_feedback
while ( true ) do {
CALLBACK=`cat /tmp/usb_notify`
# check CALLBACK for some specific password :) if you needed
notify-send "USB plugged in something, input something for me!";
USERINPUT=$(zenity --entry --title "USB plugged in" --text "Please enter something")
echo $USERINPUT > /tmp/usb_feedback
} done;
然后你可以在 udev RUN 中为你的 USB 设备挂上这个
#!/bin/sh
echo "password" > /tmp/usb_notify
REPLY=`cat /tmp/usb_feedback`
# then you can do whatever you need to with the feedback
你可以使用zenity。在您的 shell 脚本中:
USERINPUT=$(zenity --entry --title "USB 已插入" --text "请输入内容")
如需完整参考,请参阅: http: //library.gnome.org/users/zenity/stable/
还有一个名为 kdialog 的 KDE-outerpart。