插入usb设备时从用户那里获取输入

时间:2012-01-27 11:21:27

标签: linux bash unix permissions udev

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

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

2 个答案:

答案 0 :(得分:1)

由于您运行的X会话对于udev是未知的,因此udev不知道发送给谁,并且X可能有多个活动会话正在运行。要使用Zenity类型的脚本,您还需要运行当前X会话的X-Auth cookie。现在哪个从家里变为临时位置,你不会有修复脚本来破解它。

有很多方法可以做你需要的,但这取决于你想做多少工作。

通知 - 仅发送显示信息,因此无法正常工作。与上述建议一样,您需要输入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

答案 1 :(得分:0)

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

USERINPUT = $(zenity --entry --title“USB plug in” - text“请输入内容”)

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

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