expect 使用

参考:http://www.cnblogs.com/iloveyoucc/archive/2012/05/11/2496433.html

自己的小例子:

  1. ssh 到堡垒机
  2. 选择跳转服务器
  3. ssh 到目标服务器
  4. cd 到目录

login_ssh.exp

 1 #!/usr/bin/expect
 2 set timeout 30
 3 spawn ssh  [email protected]
 4 expect "Password:"
 5 send "xxx\r"
 6 expect "Select server:"
 7 send "x\r"
 8 expect -re ".*xxx.*"
 9 spawn ssh [email protected]
10 expect -re ".*password:"
11 send "xxx\r"
12 expect -re ".*xxx.*"
13 send "cd /xxx\r"
14 interact
时间: 2024-10-27 04:39:09

expect 使用的相关文章

shell脚本交互:expect学习笔记及实例详解

最近项目需求,需要写一些shell脚本交互,管道不够用时,expect可以很好的实现脚本之间交互,搜索资料,发现网上好多文章都是转载的,觉得这篇文章还不错,所以简单修改之后拿过来和大家分享一下~ 1. expect是spawn: 后面加上需要执行的shell命令,比如说spawn sudo touch testfile 1.3 expect: 只有spawn执行的命令结果才会被expect捕捉到,因为spawn会启动一个进程,只有这个进程的相关信息才会被捕捉到,主要包括:标准输入的提示信息,Li

expect使用

有些命令却需要用户手动去就交互如passwd.scp 对自动部署免去用户交互很痛苦,expect能很好的解决这类问题. expect的核心是spawn expect send set spawn 调用要执行的命令 expect 等待命令提示信息的出现,也就是捕捉用户输入的提示: send 发送需要交互的值,替代了用户手动输入内容 set 设置变量值 interact 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了.如果没有这一句登录完成后会退出,而不是留在远程终端上. ex

expect 使用实例

shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh [email protected] expect "*password:" send "123\r" expect "*#"interact Expect是一个用来处理交互的命令.借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成.形象的说,ssh登录,ftp登录等都符合交互的定义.下文我们首先提出一个问题,然后介绍基础知四个

centos 7 expect + shell实现批量创建文件

这个问题好久了,一直没整理出来.记得还是上次面试的时候问到如何批量修改1000台机器的主机名.这里给出批量创建内容为Hello,名为1.txt的文件. 一.首先安装expect yum install -y expect 二.准备工作:(1)准备IP地址的列表.vim ip.txt 192.168.1.88 192.168.1.89 192.168.1.90 (2)准备要执行的命令.vim cmd.txt mkdir /tmp/test 三.脚本部分 #!/bin/bash passwd="12

bash嵌套expect实现交换机的交互式登录实例

1. expect实现参数传递 1.1 实现 $argv 参数数组 expect脚本可以接受从bash传递过来的参数. 可以使用[lindex $argv n]获得,n从0开始,分别表示第一个,第二个,第三个....参数 1.2 样例 cat telnet.exp #!/usr/bin/expect set host [lindex $argv 0] set passwd [lindex $argv 1] set passwden [lindex $argv 2] spawn telnet $h

【扫描线】Gym - 101190E - Expect to Wait

假设初始人数为0, 将每个时刻在等待的人数写下来,就是求个和. 如果纵坐标看成人数,横坐标看成时间,就是求个面积. 因为初始人数不一定为零,所以离线后扫描线即可回答所有询问. #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; int n,m,e; struct LINE{ int y,l,id; }ls[200010]; bool cmp(const LINE &a

expect 实现交互(未完成)

expect介绍 expect命令是一个实现交互功能的软件套件,是基于TCL的脚本编程语言,在企业运维中,系统会以交互的形式要求运维人员输入指定的字符串,之后才能继续执行命令.例如:为用户设置密码时,一般情况下需要手工输入两次密码,比如使用ssh连接远程服务器时,第一次连和系统实现两次交互. 简单的说,expect用来自动实现与交互程序通信的,无需管理员手工干预 spawn启动指定进程>expect获取期待的关键字>send向指定进程发送字符>进程执行完毕,退出 expect  表达式 

神奇的expect

想写自动化脚本的时候,遇到需要交互的,如ssh,scp,就束手无策,直到我知道了expect. expect 有一系列expect-send对组成,就像聊天一样. expect A send B expect C send D 先来个例子 #!/usr/bin/expect set timeout 5 spawn ssh 192.168.2.38 expect "password" {send "slk\n"} expect "Last login&quo

Expect使用小记

By francis_hao    May 31,2017 本文翻译了部分Expect的man手册,只选取了个人常用的功能,因此并不完善. Expect是一个可以和交互式程序对话的程序 概述 介绍 通过脚本,Expect可以知道应该从对话程序中期望得到什么,和应该回应什么.它支持多分支结构,并且用户可以在需要的时候取得控制权,并在之后将控制权交还给脚本. Expect也可以被直接用在c或c++中,详见libexpect(3). Expect可以做的事情:telnet.ftp.ssh和scp等等(

Linux expect 案例

#!/usr/bin/expect set host "192.168.31.100" set password "lishiming" spawn ssh [email protected]$host expect { "yes/no" { send "yes\r"; exp_continue } "assword:" { send "$password\r" } } expect &