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

时间:2012-05-15 18:46:49

标签: bash passwords sudo

例如,如果我有一个脚本说:

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

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

1 个答案:

答案 0 :(得分:25)

在bash脚本中生成expect会话通常是您自动化交互式提示的方式。

e.g。

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

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

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

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