在一个别名命令中提供 sudo 和 openconnect 的密码

在一个别名命令中提供 sudo 和 openconnect 的密码

我想为 openconnect 创建一个别名,该别名是

echo "password" | sudo openconnect server --user=username --passwd-on-stdin --no-cert-check

一切正常,但我的问题是每次我都需要输入密码,因为我正在使用sudo。我该怎么做才能sudo在此别名中提供密码?

我见过 这个问题 但没有帮助。

答案1

您可以使用:

echo "<sudo password>" | sudo -S sh -c "echo \"<openconnect password\" | openconnect server --user=username --passwd-on-stdin --no-cert-check"

将其替换为 root 所需的密码和您的 openconnect 密码。

这应该可行,因为您首先将 sudo 密码通过管道传输到 sudo 本身(按照您链接的问题使用 -S,通过 stdin 输入密码),然后(以 root 身份)执行另一个命令 - 这就是所做的sh -c(后面跟着一个字符串,即您的命令)。我们将我们的命令附加到sh -c其中包括将 openconnect 密码通过管道传输到 openconnect 的命令 - 此时,openconnect 以 root 身份运行,因此不需要在它之前使用 sudo。

虽然我没有使用 openconnect,但我测试了 来echo "mypassword" | sudo -S sh -c "whoami | xargs -i echo {}测试管道中的值,whoami它告诉我root,确认 sudo 有效。您可能会在 stdout(您的终端)中看到一行,说明输入密码,但它仍然有效 - 如果您在 stdin 中指定了它,则可以忽略此行。

相关内容