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

iso*_*iso 6 passwords bash sudo

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

#!/bin/bash
sudo setpci -s 00:02.0 F4.B=00
Run Code Online (Sandbox Code Playgroud)

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

cmh*_*cmh 26

产卵的期待您的bash脚本中的会话通常是你如何自动化交互提示.

例如

expect -c "
spawn sudo setpci -s 00:02.0 F4.B=00
expect -nocase \"password:\" {send \"$PASS\r\"; interact}
"
Run Code Online (Sandbox Code Playgroud)

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

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

#in /etc/sudoers
neohexane ALL=(ALL) NOPASSWD : /usr/bin/setpci
Run Code Online (Sandbox Code Playgroud)

  • "不推荐"似乎是轻描淡写.我完全删除了期望的解决方案.除非这是他自己的个人邮箱,否则他绝对不应该将纯密码放在纯文本文件中. (3认同)
  • 我认为值得保留作为如何使用expect的一个例子.我会强调一下不推荐它. (3认同)