https://www.jianshu.com/p/0194cbd70d39 参考
expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
expect自动交互流程:
spawn启动指定进程---expect获取指定关键字---send向指定程序发送指定字符---执行完成退出.
expect 最关键、常用的四个命令:
send | 用于向交互对象发送字符串 |
expect | 从交互对象接收字符串 |
spawn | 启动新的进程,后面跟命令或者指定程序 |
interact | 允许用户交互,退出自动交互,停留在当前交互的host上。 |
1. 登录远程host并且不退出
#!/usr/bin/expectset timeout 5 # 跳板机1 set host "10.17.234.145" set username "dfs" set password "qwe200" set host1 "39.17.121.187" set username1 "scdd" set password1 "qwe100" spawn ssh $username@$host expect "*assword:*" {send "$password\n"} expect "*]*" {send "ssh -p 22222 $username1@$host1\n"} expect "*assword*" {send "$password1\n"} expect "*]*" {send "su\n"} expect "*:*" {send "$password1\n"} interact
interact 会使得最后的 终端停留在 登录上去的 host上。