expect 是一种自动交互语言,能实现在 shell 脚本中为 scp 和 ssh 等自动输入密码自动登录。
下面给出 ssh 和 scp 的使用示例:
1.ssh
2.scp
expect -c "
spawn scp root@192.168.81.11:/root/1.log /root
expect {
\"*assword\" {set timeout 30; send \"password\r\";}
\"yes/no\" {send \"yes\r\"; exp_continue;}
}
expect eof"
同理,password
代表机器的密码,并且最后必须以 \r
结束
3.参数解释
spawn
:spawn 是 expect 的语句,执行命令前都要加这句
expect “assword:“
:这句意思是交互获取是否返回 password:关键字,因为在执行命令时会返回输入 password 的提示 xxxxxxxx password:
set
:设定变量为某个值
send
:将密码发送出去
exp_continue
:重新执行 expect 命令分支
set timeout -1
:设置超时方式为永远等待
set timeout 30
"设置超时时间为 30 秒
interact
:代表执行完留在远程控制台,不加这句执行完后返回本地控制台
expect eof
:等待 spawn 进程结束后退出信号 eof
4.参考
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于