0

当使用 udev 规则(RUN 命令)插入 USB 设备并使用 notify-send 显示通知时,我正在运行脚本。

我希望它提示用户向 USB 输入一些输入。我该怎么做?

4

2 回答 2

1

由于 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
于 2012-04-07T13:16:53.590 回答
0

你可以使用zenity。在您的 shell 脚本中:

USERINPUT=$(zenity --entry --title "USB 已插入" --text "请输入内容")

如需完整参考,请参阅: http: //library.gnome.org/users/zenity/stable/

还有一个名为 kdialog 的 KDE-outerpart。

于 2012-02-01T17:55:05.890 回答