文档章节

expect用法

liaojie
 liaojie
发布于 2015/11/04 12:57
字数 542
阅读 619
收藏 3
点赞 0
评论 0
#!/bin/bash
echo "===== build and upload Linux server ====="
gox -osarch  "linux/amd64"
echo "===== build finish ====="
/usr/bin/expect <<-EOF
set timeout 120
spawn scp xxx_linux_amd64  root@xxx.xxx.xxx.xxx:/home/xxx/xxx
expect "password:"
send "yourpassword\r"
expect eof
EOF
echo "==== script exec finish ====="
echo "baby"

expect用法

1. [#!/usr/bin/expect] 

这一行告诉操作系统脚本里的代码使用那一个shell来执行。并且载入expect环境 注意:这一行需要在脚本的第一行。 


2. [set timeout 30]

设置超时时间的,计时单位是:秒 。timeout -1 为永不超时


3. [spawn ssh -l username 192.168.1.1] 

spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。 

它主要的功能是给ssh运行进程加个壳,用来传递交互指令。 


4. [expect "password:"] 

这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒 


5. [send "ispass\r"]

这里就是执行交互动作,与手工输入密码的动作等效。 

温馨提示: 命令字符串结尾别忘记加上“\r”,如果出现异常等待的状态可以核查一下。 


6. [interact] 

执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行 


7.$argv 参数数组

expect脚本可以接受从bash传递过来的参数.可以使用[lindex $argv n]获得,n从0开始,分别表示第一个,第二个,第三个....参数


本文转载自:http://www.cnblogs.com/iloveyoucc/archive/2012/05/11/2496433.html

共有 人打赏支持
liaojie
粉丝 29
博文 61
码字总数 11810
作品 0
朝阳
程序员
linux 怎么支持expect

[root@zuozhang PYTHON_TEST]# rpm -ql expectpackage expect is not installed查看是否有安装,如果没有安装安装一个即可。yum install expect linux expect, spawn用法小记 http://hi.baid......

干死it ⋅ 2014/06/20 ⋅ 0

使用expect批量自动备份启明防火墙配置

#!/usr/bin/expect -f if { $argc != 3 } { send_user "用法: $argv0 n" exit } set timeout 1 set TERM ANSI set SERVER [lindex $argv 0] set LOGIN [lindex $argv 1] set PASSWD [lindex ......

johnsz ⋅ 2015/01/14 ⋅ 0

iterm2使用profile功能,ssh登录

ssh用法 ssh @ ssh -p @ 脚本 脚本保存到某一目录 profile

青木河 ⋅ 2016/08/13 ⋅ 0

Linux expect 用法

用法 1. [#!/usr/bin/expect] 这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和Linux下的bash、windows下的cmd是一类东西。 注意:这一行需要在脚本的第一行。 ...

leonardos ⋅ 2017/05/24 ⋅ 0

Tcl Expect简单用法

Tcl/Expect简单用法 安装 Linux aptyumpacman 来安装tcl跟expect Windows 下载安装tcl环境:http://www.activestate.com/activetcl/downloads 安装Expect包: C:tclbinteacup.exe install E......

yanghaiquanyyy ⋅ 2013/09/16 ⋅ 0

linux expect案例用法

EXPECT 用法 expect是基于TCL的相对简单的一个免费脚本编程工具语言,用来实现自动和交互式任务进行通信,无需人的 手工干预,比如sshFTP等,这些程序正常情况都需要手工与它们进行交互,而使...

jiaohuanji88 ⋅ 2015/02/23 ⋅ 0

Tcl/Expect简单用法

安装 Linux aptyumpacman 来安装tcl跟expect Windows 下载安装tcl环境: 安装Expect包: C:tclbinteacup.exe install Expect 使用 Linux下首行为 Windows下首行为 为命令的超时时间 后面跟s...

Yisen ⋅ 2012/11/15 ⋅ 0

shell脚本的应用

今年来公司配了mac,所有的开发环境都重新部署了一遍,由于都是在开发机上运行项目的,免不了在开发机上操作各种,ssh当然是必须的,但是mac下不熟悉,每次ssh命令行,再输入密码太讨厌了,所...

LCZ777 ⋅ 2016/09/13 ⋅ 2

使用expect批量自动备份交换机配置

通过使用expect工具以shell,来实现自动备份交换机配置的功能,从而提高工作效率。 软件:expect-5.44.1.15-4.el6.i686 目的:通过读取文件中的内容,自动登录网络设备,完成相应命令,最后将...

johnsz ⋅ 2015/01/14 ⋅ 0

shell expect的简单用法

为什么需要expect? 我们通过Shell可以实现简单的控制流功能,如:循环、判断等。但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如 telnet服务器等进行交互...

PlayWithYou ⋅ 2017/10/01 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

tcp/ip详解-链路层

简介 设计链路层的目的: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP模块发送RARP请求和接收RARP应答 TCP/IP支持多种链路层协议,如以太网、令牌环往、FDDI、RS-...

loda0128 ⋅ 今天 ⋅ 0

spring.net aop代码例子

https://www.cnblogs.com/haogj/archive/2011/10/12/2207916.html

whoisliang ⋅ 今天 ⋅ 0

发送短信如何限制1小时内最多发送11条短信

发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当...

黄威 ⋅ 昨天 ⋅ 0

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

SpringBoot简单使用ehcache

1,SpringBoot版本 2.0.3.RELEASE ①,pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELE......

暗中观察 ⋅ 昨天 ⋅ 0

Spring源码解析(八)——实例创建(下)

前言 来到实例创建的最后一节,前面已经将一个实例通过不同方式(工厂方法、构造器注入、默认构造器)给创建出来了,下面我们要对创建出来的实例进行一些“加工”处理。 源码解读 回顾下之前...

MarvelCode ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部