/usr/bin/expect 的使用

举个栗子:

# expect超过超时时间没有监测到要找的字符串,则不执行
set timeout 30

# 获取传入的三个参数
set host [lindex $argv 0]
set code [lindex $argv 1]
set passwd [lindex $argv 2]

# 运行ssh连接命令
spawn ssh $host

# 自动输入验证码&密码
expect {
  "Verification code:" { send "$code\n"; exp_continue}
  "Password:" { send "$passwd\n"}
}

# 退出expect返回终端,可以继续输入,否则将一直在expect不能退出到终端
interact

用法

  • spawn : expect脚本中用于向机器发出首个linux命令用,该命令将在系统中创建一个进程
  • expect : expect脚本中用于等待和分析机器执行结果用
  • send : expect脚本中用于模仿“人"向机器进程发出linux命令用
  • interact : expect脚本中用于将交互双方由expect脚本和机器内核改为——>字符终端和机器内核(即为正常人和机器交互的模式)

sh脚本调用expect

expect只能用来代替人向终端输入指令。有时候在此之前还需要运行一些shell脚本的命令。所有就需要使用sh脚本来调用expect。

举个栗子:

#!/bin/sh
# 登录信息
host="这里是主机地址"
passwd="这里是密码"
secret="这个是用来计算code的加密串,无视它"

# 获得动态码
code=`这里是计算code的命令,继续无视它`

# expect调用login脚本
expect login.sh $host $code $passwd

expect 原理

这里写图片描述

mac 安装expect

brew install expect

Q&A

spawn: command not found

脚本首行: #!/usr/bin/expect
执行时:  ./you.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值