install
|
|
usage
两种调用方式
-
直接使用 expect 解释器
TODO 此情况下无法使用变量
1 2 3 4 5 6 7 8 9 10#!/usr/bin/expect set timeout -1 # 设置expect会话捕捉超时时间, 默认 10 sec, 设为 -1,没有超时 # SSH 连接 spawn ssh root@127.0.0.1 # spawn 后加要执行的命令 expect "password:" # 使用 expect 进行捕捉, 当输出为 password: 时执行 send 动作 send "pwd\r" # send 后加要输入的字符串, 使用 `send --` 来输入含有特殊字符的字符串 interact # 控制权转交给人工 -
在 bash shell 内执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20#!/bin/bash set timeout -1 ssh_pwd=pwd # SSH 连接 /usr/bin/expect <<-EOF # 使用 expect 解释器 spawn ssh root@127.0.0.1 # 使用 expect 进行捕捉,格式为 “捕捉字符串” {捕捉到需执行操作} # 加上;exp_continue 表示还需要继续保持捕捉动作(会话) expect { # "Password:" {send "$sudo_pwd\r";exp_continue} "password:" {send "$ssh_pwd\r"} # 在这次的 expect 内存在 timeout, spawn 后的命令会自动退出, 也就是说本次的 SSH 连接会自动断开 timeout {exit 127} } expect eof EOF