简单的spawn与expect使用

今天写一个脚本,需要与终端输出交互,学习着使用了简单的spawn与expect,感觉很方便,记录一下。

1. 首先要保证linux server上安装了expect,我自己的服务器跑的是suse 10.2,比较老的版本,默认没有安装expect,下了个rpm包装上先。(现在外面跑得suse enterprise基本都是11或者12的,看来要赶紧升级了,不然下个rpm包很多都没有对应的版本)安装了之后,/usr/bin/目录下有expect可执行文件。

2. 关于expect,先说明一下,只有spawn的内容才能expect捕获到,expect的内容包括了:终端的输出,eof和超时。

3. 根据个简单的登录脚本说明下:

#!/usr/bin/expect --> 1
set timeout 30 --> 2
spawn ssh root@192.168.1.199 -p 22 --> 3

#expect {
#       "(yes/no)?" {send "yes\r"}
#}
expect {
        "Password:" {send "****\r"} --> 4
}
expect {
        "#" {send "cd /home/software\r"} --> 5
}
interact -->6

其中: 

1)#!/usr/bin/expect,不再是#!/bin/sh了

2) set timeout 30,首先设置一个超时时间;

3) spawn一个ssh登录进程;

4) 当终端输出“Password”时输入密码;

5) 登录之后,输入一个路径;

6) interact,等待交互;如果此处不用interact,就会自动退出了;

4. 简单交互,使用spawn与expect很方便;expect也有很多高级的应用,没有研究过,有本书专门讲这个的,叫《exploring expect》,在这里有的下载:http://bbs.chinaunix.net/thread-1769951-1-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值