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