Expect交互自动化

Posted tongyishu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Expect交互自动化相关的知识,希望对你有一定的参考价值。

expect功能

Linux下运行命令、脚本或程序时,经常需要从终端输入某些命令继续运行的指令,这些输入都需要人为的手工干预。

expect可以根据程序的提示,模拟标准输入提供给程序,从而实现自动化交互执行。一般位于 /usr/bin/ecpect 。

expect 的四个命令:

       send : 用于向进程发送字符串

       expect : 从进程接收字符串

       spawn : 启动一个新的进程

       interact : 退出自动化,进入人工交互

ssh登录脚本示例:

#!/usr/bin/expect

# 设置超时时间,单位为秒,默认情况下是10秒;-1不会超时
set timeout 30

# 设置主机IP、用户名及密码
set host "101.200.241.109"
set username "root"
set password "123456"

# spawn是进入expect环境后才可以执行的expect内部命令,直接在shell下执行是找不到spawn命令的;它主要的功能是给ssh运行进程加个壳,用来传递交互指令
spawn ssh $username@$host

# expect也是expect的一个内部命令,这个命令的意思是判断上次输出结果里是否包含“password”的字符串,如果有则立即返回;否则就等待一段时间后返回,这里等待时长就是前面设置的30秒
expect "*password*" {send "$password
"}

# 执行完成后保持交互状态,把控制权交给控制台,进行人工交互;如果没有这一句登录完成后会退出,而不是留在远程终端上
interact

 

  

以上是关于Expect交互自动化的主要内容,如果未能解决你的问题,请参考以下文章

自动化交互expect

shell脚本引用expect

expect 实现自动交互脚本

Linux - 通过expect工具实现脚本的自动交互

Expect 自动交互式程序

expect工具实现脚本的自动交互