bash - 运行 bash 脚本时自动输入密码

标签 bash passwords sudo

<分区>

例如,假设我有一个脚本说:

#!/bin/bash
sudo setpci -s 00:02.0 F4.B=00

我如何将 root 密码放入脚本中,以便它在读取和执行 sudo 行时接受它作为密码(这样我就不必手动输入)?

最佳答案

生成一个 expect bash 脚本中的 session 通常是您自动化交互式提示的方式。

例如

expect -c "
spawn sudo setpci -s 00:02.0 F4.B=00
expect -nocase \"password:\" {send \"$PASS\r\"; interact}
"

请注意,在这种情况下,这不是推荐的方法,因为将根密码存储在 bash 脚本中是一个巨大的安全漏洞。

正确的解决方案是编辑您的 /etc/sudoers/ 以不提示您输入该二进制文件的密码。

#in /etc/sudoers
neohexane ALL=(ALL) NOPASSWD : /usr/bin/setpci

关于bash - 运行 bash 脚本时自动输入密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10606958/

相关文章:

linux - setuid 位实际上是如何在 *nix 中实现的?

winforms - 如何在Winforms应用程序中存储密码?

git - github 或 bitbucket 上的私有(private)存储库是否可以安全地存储密码?

bash - 使用 'sudo' 运行延迟命令

linux - 为什么在 python3 中导入 pyspark 需要我的 linux 机器上的 super 用户访问权限?

bash - 使用 find 和 mv 更改嵌套文件夹中的名称(版本号)

linux - 如何使用字符串作为文件名输入来执行 imagemagick - 在 bash 中

linux - 使用sudo时如何保留环境变量

linux 邮件添加内容类型 header 不起作用

Javascript - 登录框不起作用