编辑,这个问题可能还不是很清楚,简短的版本:
如果脚本在后台运行而不是在活动控制台中,如何弹出询问用户输入的对话框?/编辑
当我从 udev 或 cron 运行 bash 脚本时,它通常会在后台某处安静地运行。示例可能是插入外部硬盘驱动器运行 rsync 以进行数据备份。所以不是每次我插入硬盘时我都想启动这个动作。
启动某些用户输入对话框并询问是或否的最简单方法是什么?我可以用 PyQt 编写一些界面,但我希望尽可能少的依赖关系,最好是跨窗口管理器,甚至可能没有窗口管理器。
谢谢!
编辑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
但希望它在资源/依赖项上会轻很多。有什么替代建议吗?
这应该在 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
我将把这两者结合起来作为练习。
一个简单的方法是让自动化脚本简单地向您发送电子邮件,或者可能wall
通过说明(包含真实脚本的位置)发出警报。
另一种方法是将自动脚本写入touch
文件/var/lib
并在 5 分钟后如果文件仍然存在则继续。这使用户可以选择停止进程(通过删除文件),但保持一些自动化。
这不是您应该首先处理 cron 或 udev 的事情。编写一个用户区守护程序,它监听适当的 D-Bus 消息并执行适当的操作。