linux-expect

expect基础

expect常用的四个命令:

spawn
启动新的进程

expect
从进程接收字符串

send 用于向进程发送字符串

interact 允许用户交互

详细解释:

spawn命令用来启动新的进程,spawn后的sendexpect命令都是和使用spawn打开的进程进行交互。

send命令接收一个字符串参数,并将该参数发送到进程。

expect命令和send命令相反,expect通常用来等待一个进程的反馈,我们根据进程的反馈,再发送对应的交互命令。

interact命令用的其实不是很多,一般情况下使用spawnsendexpect命令就可以很好的完成我们的任务;但在一些特殊场合下还是需要使用interact命令的,interact命令主要用于退出自动化,进入人工交互。比如我们使用spawnsendexpect命令完成了ftp登陆主机,执行下载文件任务,但是我们希望在文件下载结束以后,仍然可以停留在ftp命令行状态,以便手动的执行后续命令,此时使用interact命令就可以很好的完成这个任务。

#!/usr/bin/expect 
#!/usr/bin/bash 

#ssh连接的用户名 
set username ***

#ssh连接的地址 
set host 80.7.3.1 

#ssh连接远程目录 
set dirname "/log/configsave_dir" 

#目标文件名 
set filename "`date +%Y%m%d`.tar.gz" 

#ssh连接的端口号 
set port 22 

#ssh连接的密码 
set password ***

#ssh连接的超时时间 
set timeout -1 

#spawn ssh [email protected]$host -p $port 
#echo $filename 
spawn scp [email protected]$host:$dirname/$filename /opt 
expect "*password:" 
send "$password\r" 
interact
时间: 2024-11-10 00:09:18

linux-expect的相关文章

Linux expect 用法

用法 1. [#!/usr/bin/expect] 这一行告诉操作系统脚本里的代码使用那一个shell来执行.这里的expect其实和Linux下的bash.windows下的cmd是一类东西. 注意:这一行需要在脚本的第一行. 2. [set timeout 30] 基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒.timeout -1 为永不超时,默认情况下,timeout是10秒: 3. [spawn ssh -l username 192.168.1.1] sp

Linux expect工具简单示例

expect安装命令 yum -y install expect 脚本代码如下: #!/usr/bin/expect set timeout 30 spawn ssh -l username 192.168.1.1 expect "password:" send -- "ispass\r"  //--可加也可不加 interact 脚本文件执行需要使用shell命令 :expect  filename 来执行 命令详细解释 1. #!/usr/bin/expect

linux expect的简单用法及举例

一.expect简介 我们通过Shell可以实现简单的控制流功能,如:循环.判断等.但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet服务器等进行交互的功能.而Expect就使用来实现这种功能的工具. Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预.Expect的作者Don Libes在1990年 开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件 (Expect [

expect spawn、linux expect 用法小记

使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: 1 #!/usr/bin/expect 2 set timeout 30 3 spawn ssh -l username 192.168.1.1 4 expect "password:" 5 send "ispass\r" 6 interact 1. [#!/usr/bin/expec

linux expect案例用法

EXPECT 用法 expect是基于TCL的相对简单的一个免费脚本编程工具语言,用来实现自动和交互式任务进行通信,无需人的 手工干预,比如ssh\FTP等,这些程序正常情况都需要手工与它们进行交互,而使用EXPECT就可以模拟人手工交互的过程,实现自动的 和远程的程序交互,从而达到自动化的目的. EXPECT是一个用来实现自动交互功能的软件套件(EXPECT is a software suite for automating interactive tools) 虽然,使用C.perl等一样

【转】shell expect spawn、linux expect 用法小记 看着舒服点

使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ############################################## #!/usr/bin/expect set timeout 30 spawn ssh -l username 192.168.1.1 expect "password:" send "ispass\r&

linux expect 简单讲解

来自http://blog.csdn.net/winstary/archive/2009/08/08/4422156.aspx使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理.脚本代码如下: #!/usr/bin/expect settimeout30 spawnssh-lusername192.168.1.1 expect"password:" send"is

Linux expect实现自动登录

expect expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令.当然若是使用不带密码的密钥验证同样可以实现自动登录和自动远程执行命令.但当不能使用密钥验证的时候,我们就没有办法了.所以,这时候只要知道对方机器的账号和密码就可以通过expect脚本实现登录和远程命令. 引言 目前在公司是一人一台虚拟机,大多数工作都要在虚拟机上完成,为此每天要执行很多次[ssh [email protected]]指令登录虚拟机:有很多方式解决这个问题,如使用xshell.secureCRT

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 &

linux expect命令使用入门

expect的核心是spawn expect send set spawn:spawn是进入expect环境后才可以执行的expect内部命令,相当于shell中的内置命令,通过它,调用需要执行的命令 expect:捕获提示 send:发送交互值(结尾需要加上\n) set:设置变量 interact:执行完保留交互状态 expect eof :与spawn对应表示捕获终端输出信息终止 $argv :相当于c语言中的参数变量,接收bash传过来的参数.取值方式,索引方式[lindex $argv