当使用udev规则(RUN命令)插入USB设备并使用notify send显示通知时,我正在运行一个脚本。
我希望它能提示用户输入一些USB输入。我该怎么做?

最佳答案

由于udev不知道您正在运行的X会话,udev不知道要发送给谁,X可以运行多个活动会话。为了让Zenity类型的脚本工作,您还需要当前运行的X会话中的X-Auth cookie。它现在从家里变成了一个临时的位置,你将没有一个修复脚本来破解它。
有很多方法可以满足你的需求,但这取决于你想做多少工作。
notify只发送显示信息,因此它无法工作。像上面的建议一样,您需要输入zenity或kdialog类型。但更重要的是,您需要当前会话,因此您可能希望将脚本与gnome会话属性挂钩。这样,每次登录时都会运行钩子。
这只是连接到gnome会话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;

然后你可以把这个挂在你的usb设备的udev运行中
#!/bin/sh

echo "password" > /tmp/usb_notify
REPLY=`cat /tmp/usb_feedback`
# then you can do whatever you need to with the feedback

关于linux - 插入USB设备时从用户处获取输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9032547/

10-14 19:46
查看更多