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上。

01-12 18:02