2

编辑,这个问题可能还不是很清楚,简短的版本:

如果脚本在后台运行而不是在活动控制台中,如何弹出询问用户输入的对话框?/编辑

当我从 udev 或 cron 运行 bash 脚本时,它通常会在后台某处安静地运行。示例可能是插入外部硬盘驱动器运行 rsync 以进行数据备份。所以不是每次我插入硬盘时我都想启动这个动作。

启动某些用户输入对话框并询问是或否的最简单方法是什么?我可以用 PyQt 编写一些界面,但我希望尽可能少的依赖关系,最好是跨窗口管理器,甚至可能没有窗口管理器。

谢谢!

4

4 回答 4

1

编辑2:轻量级(因此和预期的一样丑)版本是xmessage,这可能是问题的答案,除非你有更好的:

xmessage  "Do you want to run the backup script?" -buttons yes,no

http://linux.byexamples.com/archives/87/using-gui-dialog-box/

编辑:所以kde有KDialog,X有什么真正轻量级的东西吗?

http://www.linux-magazine.com/Issues/2009/99/Zenity-and-KDialog

kdialog --title "Do you want to run the backup script?"
--yesno "Do you want to run the backup script?"

我目前倾向于 zenity,唯一的问题是它在 kde 上引入了一系列 gtk 依赖项,但它是跨平台的并且可以在 Windows 上运行。从本质上讲,这正是我想要的:

if zenity --question --text="Please press a button."; then
    zenity --info --text="You pressed Yes\!"
else
    zenity --error --text="You pressed No\!"
fi

但希望它在资源/依赖项上会轻很多。有什么替代建议吗?

于 2012-12-19T17:31:24.463 回答
0

这应该在 linux 或超级用户或服务器故障中发布。

但是,Linux 上排名第一的谷歌搜索读取用户输入链接返回到 StackOverflow: https ://www.google.com/search?q=linux+read+user+input&ie=utf-8&oe=utf-8&aq=t&rls= org.mozilla:en-US:official&client=firefox-a&channel=fflb

所以我想这不是太离谱。

同样,linux 调用命令 usb 设备插件的第三个谷歌结果链接到 ServerFault: https ://serverfault.com/questions/399698/execute-a-command-when-a-device-is-connected-via-usb

我将把这两者结合起来作为练习。

于 2012-12-19T16:46:16.797 回答
0

一个简单的方法是让自动化脚本简单地向您发送电子邮件,或者可能wall通过说明(包含真实脚本的位置)发出警报。

另一种方法是将自动脚本写入touch文件/var/lib并在 5 分钟后如果文件仍然存在则继续。这使用户可以选择停止进程(通过删除文件),但保持一些自动化。

于 2012-12-19T16:42:29.327 回答
0

这不是您应该首先处理 cron 或 udev 的事情。编写一个用户区守护程序,它监听适当的 D-Bus 消息并执行适当的操作。

于 2012-12-19T16:43:52.633 回答