如何修改Expect脚本从password.txt读取密码实现自动授权?
让Expect脚本从password.txt读取密码完成自动授权
修改Expect脚本读取密码
原脚本里的answer是错误命令,需要改成send,同时从password.txt读取密码内容替换硬编码值。修改后的完整Expect脚本如下:
#!/bin/expect # 读取password.txt中的第一行作为密码 set password [exec cat password.txt] spawn ./script.sh expect "password:" # 发送密码并加上回车符完成输入 send "$password\r" expect "$"
可选:合并Bash与Expect脚本
如果不想分开维护两个脚本,可以把逻辑合并成一个Bash脚本,直接调用expect完成操作:
#!/bin/bash # 从password.txt读取密码 password=$(cat password.txt) # 用Here Document执行Expect逻辑 expect << EOF spawn rsync -avz username@ip:/fileineed /home expect "password:" send "$password\r" expect eof EOF
关键注意事项
- 确保
password.txt中只有一行纯密码内容,不要包含多余的换行、空格或注释,否则会导致密码输入错误 - 务必设置文件权限保护密码:
chmod 600 password.txt,防止其他用户读取到敏感内容 - 如果
password.txt所在路径不是脚本执行目录,需要写绝对路径(比如/home/user/password.txt)
内容的提问来源于stack exchange,提问作者user19615058
相关产品推荐
相关产品推荐

