kdialog --password 与 sudo 一起使用?

kdialog --password 与 sudo 一起使用?

我在制作一个小工具时使用 kdialog,现在我遇到了这个问题。有一个或多个组合函数需要连续 3 或 4 次 sudo。所以必须输入这么多次真的很烦人。

我想使用 kdialog --password 来存储我的 sudo 密码,每次打开应用程序时,它都会存储在一个变量中。这样它就不会放在文件或其他地方。无论如何,我可以看到它存储了,只需找到我可以回显 $passwrd。但我不知道如何在终端要求时将其输入到终端中。这可能吗?如果可以,如何操作,即使采用不同的方法。如果不是,kdialog --password 的实际用途是什么?如果你不能这样做,那么它真的没什么用处。

谢谢。

答案1

你可能已经知道答案了,但我还是在这里发布。你可以使用预计命令在出现所需提示时将密码(存储在“passwd”变量中)发送到终端。一个很好的教程可以看到这里

答案2

对话

使用 KDE 对话框进行开发/教程/Shell 脚本:http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs

 Example 6: Password Dialog Using a Shell Variable

 Instead of saving the result in a file, you can also use a shell
 variable. Note that you need to use the "backtick" notation - this key
 is normally found on the top left of English (British or American)
 layout keyboards, above the "7" key on French layout keyboards, and on
 the top right of German layout keyboards.

 password=`kdialog --password "Enter the password"`

答案3

sudo -S用途:从标准输入读取密码而不是使用终端设备。

  1. 使用设置 PASSWRD 变量kdialog --password命令替换 $()评估表达式

PASSWRD=$(kdialog --password "Enter password to start: ")

  1. 如果未设置 PASSWRD,退出程序

[[ -z "$PASSWRD" ]] && { echo "No Password, exiting... " ; exit 1; }

  1. 使用管道将 PASSWRD 传输到 sudo,并为每个命令设置-S或开关,--stdin提示将写入标准错误

echo "$PASSWRD" | sudo -S dnf -y groupinstall "C Development Tools and Libraries"

echo "$PASSWRD" | sudo -S dnf --nogpgcheck -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

  1. 明确地取消设置PASSWRD 变量

unset PASSWRD

例子使用以下命令在 Fedora 上安装 Nvidia 驱动程序和一些附加功能:

kdialog --password&kdialog --progressbar

相关内容