Expect免交互

一、expect 概述:
(1)expect 是建立在 tcl 基础上的一个工具,expect是用来进行自动化控制和测试的工具,主要解决shell脚本中不可交互的问题。对于大规模的linux运维很有帮助
(2)在linux 运维和开发中,我们经常需要远程登录服务器进行操作,登录的过程是一个交互的过程,可能会需要输入yes/no password等信息。为了模拟这种输入,可以使用expect脚本。
(3)安装

yum install expect -y

二、基本命令:
(1)send:向进程发送字符串,用于模拟用户的输入(该命令不能自动回车换行,一般要加 \r (回车))
(2)expect :判断上次输出结果里是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回,只能捕捉由 spawn 启动的进程的输出。
(3)sapwn :启动进程,并跟踪后续交互信息 。
(4)interact :执行完成后保持交互状态,把控制权交给控制台。
(5)timeout : 指定超时时间,过期则继续执行后续指令。

单位为:秒
timeout -1 为永不超时
默认情况下,是10秒

(6)exp_continue :允许expect 继续向下执行指令
(7)send _user :相当于echo
(8)$argv 参数数组: expect脚本可以接受从bash传递的参数,可以使用 [lindex $argv n ] 获得
(9)expect 脚本必须以interact 或 expect eof 结束,执行自动化任务通常 expect eof 就够了

expect eof 是在等待结束标志,由spawn 启动的命令在结束时会产生一个 eof标记,expect eof 即在等待这个标记。

三、expect 执行方式:
(1)直接执行:
例子:ssh 远程登录,免交互输入用户名和密码。

1 #!/usr/bin/expect   //expect 二进制文件的路径
  2 set timeout 20    //超时时间
  3 log_file test.log
  4 log_user 1
  5
  6 set hostname [lindex $argv 0]  //0表示第一个参数
  7 set password [lindex $argv 1]  //1 表示第二个参数
  8 spawn ssh [email protected]$hostname  //启动进程,并跟踪
  9
 10 expect {  //捕捉进程
 11         "(yes/no)"
 12         {send "yes\r";exp_continue}
 13         "*password"
 14         {send "$password\r"}
 15 }
 16
 17 interact //将控制权交给控制台

嵌入使用

1 #!/bin/bash
  2 ip=$1
  3 password=$2
  4
  5 /usr/bin/expect<<-EOF
  6
  7 spawn ssh [email protected]${ip}
  8 expect {
  9         "(yes/no)"
 10         {send "yes\r";exp_continue} //键盘输入yes 并继续
 11         "*password"
 12         {send "$password\r"}
 13 }
 14 expect "*]#"
 15 send "exit\r"
 16 expect eof
 17 EOF
 18 

**
案例一:创建一个用户zhang,密码为123123

** 1 #!/bin/bash
  2 yonghu=$1
  3 mima=$2
  4 useradd $yonghu //创建用户
  5 /usr/bin/expect <<-EOF
  6 spawn passwd $yonghu
  7 expect {
  8         "新的 密码:"
  9         {send "$mima\r";exp_continue}
 10         "重新输入新的 密码"
 11         {send "$mima\r"}
 12 }
 13 EOF**

原文地址:https://blog.51cto.com/14449563/2441561

时间: 2024-11-05 20:29:20

Expect免交互的相关文章

Shll编程之Expect免交互

Shll编程之Expect免交互 1.Expect概述 2.Expect安装(底层语言Tcl) 3.Expect基本命令 4.Expect执行方式 5.Expect案例 Expect概述: 1.Expect是建立在tcl语言基础上的一个工具,Expect是用来进行自动化控制和测试的工具.主要解决shell脚本中不可交互的问题.对于大规模的linux运维很有帮助. 2.在linux运维和开发中,我们经常需要远程登录服务器进行操作,登录的过程是一个交互的过程,可能会余姚输入yes/no passwo

Shell编程之Expect免交互

Shell编程之Expect免交互 Expect概述 Expect安装 Expect基本命令 Expect执行方式 Expect案例 Expect概述 Expect Expect是建立在tcl基础上的一个工具,Expect 是用来进行自动化控制和测试的工具.主要解决shell脚本中不可交互的问题.对于大规模的linux运维很有帮助 在linux运维和开发中,我们经常需要远程登录服务器进行操作,登录的过程是一个交互的过程,可能会需要输入yes/no password等信息.为了模拟这种输入,可以使

无标题文章shell编程之Expect免交互

shell编程之Expect免交互 前言 一:Expect概述 Expect是建立在tcl基础上的一个工具,Expect是用来进行自动化控制和测试的工具.主要解决shell脚本中不可交互的问题,对于大规模的linux运维很有帮助 在Linux运维和开发中,我们经常需要远程登录服务器进行操作,在登录的过程是一个交互的过程,可能会需要输入yes/no password等信息. 为了模拟这种输入,可以使用Expect脚本 二:Expect基本命令 2.1:Expect安装 系统一般不自带,需要自己安装

expect 免交互配置互信

++++++++++++++++++++++++++++++++++++++++ 标题:expect 免交互配置互信 时间:2020年3月3日 ++++++++++++++++++++++++++++++++++++++++ #/usr/bin/env expect set  ip  192.168.100.100 set  user  root set  password  centos set  timeout  5 spawn ssh-copy-id "${user}@${ip} -p 2

Shell脚本之Expect免交互

Expext概述 Expect是建立在tcl基础上的一个工具,Expect是用来自动化控制和测试的工具.主要解决shell脚本中不可交互的问题.有助于大规模的系统运维工作.在日常的运维与开发中,常常需要运城登录到服务器,然而登录的过程却是个需要交互的过程,可能会要输入yes/no等信息,使用Expect脚本即可实现免交互操作. Expect安装 挂载光盘制作本地YUM源执行安装命令yum install expect -y 基本命令 send 向进程发送字符串,用于模拟用户的输入,该命令不能自动

Shell编程——Expect免交互

Expect概述 Expect是建立在tcl基础上的一个工具,Expect是用来进行自动化控制和测试的工具.主要解决shell脚本中不可交互的问题.对于大规模的Linux运维很有帮助在Linux运维和开发中,我们经常需要远程登录服务器进行操作,登录过程是一个交互的过程,可能会需要输入yes/no,password等信息.为了模拟这种输入,可以使用Expect脚本. 基本命令 send:向进程发送字符串,用于模拟用户的输入 该命令不能自动回车换行,一般要加\r(回车) expect expect的

Shell编程之Expect免交互语句详解

Expect概述 Expect是建立在tcl基础_上的一个工具,Expect 是用来进行自动化控制和测试的工具.主要解决shell脚本中不可交互的问题.对于大规模的linux运维很有帮助.在linux运维和开发中,我们经常需要远程登录服务器进行操作,登录的过程是一个交互的过程,可能会需要输入(yes/no)password等信息.为了模拟这种输入,可以使用Expect脚本. Expect安装 yum install expect -y 基本命令 send: 向进程发送字符串,用于模拟用户的输入.

shell进阶——expect免交互工具的使用

前言: expect是什么? 答:expect 是由Don Libes基于Tcl(Tool Command Language )语言开发的,主要应用于自动化交互式操作的场景,是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预.说白了,expect就是一套用来实现自动交互功能的软件. expect能做什么? 答:借助expect处理交互的命令,可以将交互过程如:ssh登录,ftp登录等写在一个脚本上,使之自动化完成.尤其适用于需要对多台服务器执行相同操作的环境中,可以大大提高系统管理人

expect免交互脚本编程

一.大纲 1.Expect概述2.Expect安装(底层语言Tcl)3.Expect基本命令4.Expect执行方式5.Expect案例 一.Expect概述 1.Expect是建立在tcl语言基础上的一个工具,Expect是用来进行自动化控制和测试的工具.主要解决shell脚本中不可交互的问题.对于大规模的linux运维很有帮助.2.在linux运维和开发中,我们经常需要远程登录服务器进行操作,登录的过程是一个交互的过程,可能会余姚输入yes/no password等信息.为了模拟这种输入,可