如何在不出现提示的情况下将密码从环境变量传递给 sudo?
How to pass password to sudo from environment variable without prompt appearing?
如何在不出现 sudo 提示的情况下通过标准输入将我的密码从环境变量传递给 sudo?
我试过 $ echo $PASSWORD | sudo -S echo foo
但是 returns [sudo] password for mithic: foo
。
总是使用 -n
标志 returns 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
命名的可执行文件,并从其输出中读取密码。
如何在不出现 sudo 提示的情况下通过标准输入将我的密码从环境变量传递给 sudo?
我试过 $ echo $PASSWORD | sudo -S echo foo
但是 returns [sudo] password for mithic: foo
。
总是使用 -n
标志 returns 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
命名的可执行文件,并从其输出中读取密码。