免密码切换用户
在不做sudo的情况下,想要免输密码切换用户,可以编写交互式脚本。
两种方案:
1、使用 -c 避免 Here-Document 问题 <<EOF
2、解决 Here-Document 问题
反面案例 普通的Here-Document <<EOF
#!/bin/bash
password="123456"
/bin/expect <<EOF
spawn su - root
expect {
"password: " {send "${password}\r"}
}
interact # 此处的 interact 会失败;因为 expect 无法接管 fd=0 让用户手动输入;interact 瞬间失效或退出
EOF
一、避开 Here-Document问题
#!/bin/bash
password="123456"
/bin/expect -c "
spawn su - root
expect {
\"password: \" {send \"${password}\r\"}
}
interact
"
二、解决 Here-Document问题
Here-Document会劫持 stdin;解决 stdin 被劫持、让 interact 能够正常获取物理 TTY 键盘输入
#!/bin/bash
password="123456"
/bin/expect <(cat <<EOF
spawn su - root
expect {
"password: " {send "${password}\r"}
}
interact
EOF
)
494

被折叠的 条评论
为什么被折叠?



