如何在不出现 sudo 提示符的情况下,将密码从环境变量传递到 sudo?
我已经尝试过$ echo $PASSWORD | sudo -S echo foo
但返回[sudo] password for mithic: foo
. 使用-n
标志总是返回sudo: a password is required
(除非我最近输入了正确的密码(。
您可以设置空密码提示:
printf '%sn' "$PASSWORD" | sudo -p "" -S echo foo
如果它真的在环境中,我建议使用-A
选项而不是-S
。编写一个非常小的脚本,将值写入标准输出。
#!/bin/sh
printf '%s' "$PASSWORD"
称其为类似于asker
并使其可执行
chmod +x asker
执行以下操作:
SUDO_ASKPASS=./asker sudo -A echo foo
-A
使sudo
运行由SUDO_ASKPASS
命名的可执行文件,并从其输出中读取密码。