如何在不显示sudo提示的情况下通过stdin将密码从环境变量传递给sudo?
我已经尝试过$ echo $PASSWORD | sudo -S echo foo
,但返回[sudo] password for mithic: foo
。使用-n
标志总是会返回sudo: a password is required
(除非我最近输入了正确的密码)。
您可以设置一个空的密码提示:
printf '%s\n' "$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
命名的可执行文件并从其输出中读取密码。