TCL中Expect 交互的学习小结

Expect作为一种重要的TCL扩展包,主要有以下几个命令:

  1. spawn用于启动一个进程,之后所有expect操作都在这个进程中进行。

如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命 令的。所以不要用 “which spawn“之类的命令去找spawn命令。

   spawn ssh [email protected]
   spawn telnet 135.251.193.217

2. expect & exp_send

 expect "password:"
 exp_send "word\r"

也可以在一个expec中匹配多个关键字

expect -re "password:" {  exp_send "word\r" }
       -re "noresponse" {}

读到noresponse,会退出expect

3. 关于exp_send 和 send

exp_send可发送一些特殊符号 \r, \n, \t

4. 关于exp_continue

expect -re "password:" {  exp_send "word\r";exp_continue}
       -re "noresponse" {}

exp_continue会使匹配第一个关键字后从头开始再匹配第二个关键字

5. exp_pid 用来获取当前spawn的id

6. set timeout 30

用以设置expec等待超时时间

7. close -id

杀死对应的spawn_id的进程。

8 interact

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

举例:脚本自动上传log

#!/usr/bin/expect
spawn scp [lindex $argv 0] [email protected]:/home
expect "[email protected]‘s password:" {exp_send "123456\n"}
interact

把上面保存为expect_script

#!/bin/bash
for f in `ls /log/*.log`
do
    expect_script $f
done

再编写如上的bash脚本执行即可。

时间: 2024-10-17 13:57:17

TCL中Expect 交互的学习小结的相关文章

.net中实现伪静态的学习小结

好久不写博文了,回想起来上一篇博文应该是很久以前写的了.今天写点过去的学习心得——.net中实现伪静态. 比如:类似这样的链接list.aspx?id=1&pid=5,我们并不想在浏览器地址栏中(注意这句话)看到后缀和参数的传递,我们想让他变成list-1-5.html这样的.原理很简单,首先展现给客户点击的部分就写成list-1-5.html或者是其他的静态的.html链接,比如:list/1/5.html或者list_1_5.html等,在前台部分都这样写,浏览器不管你处理的页面,他只知道你

akka actor中的基本概念(学习小结)

注:本文章是看blog后的一个阶段小结,只作为个人笔记, 原文链接:http://www.iteblog.com/archives/1154 官网地址贴上:http://doc.akka.io/docs/akka/snapshot/scala/actors.html 什么是akka akka的actor模式提供了一个写并发和分布式系统的高层次抽象,将程序员从锁和线程管理等问题中解放出来,是一个在JVM上构建高并发.分布式和可快速恢复的消息驱动应用的工具集和运行时,actors 模式是在Carl

《脑机交互促进学习有效发生的路径及实验研究——基于在线学习系统中的注意力干预分析》 文献随笔(八)

一.基本信息 标题:脑机交互促进学习有效发生的路径及实验研究——基于在线学习系统中的注意力干预分析时间: 2019来源: 前沿搜索关键字:脑机交互:脑机接口:学习路径:学习注意力:实验研究:自适应学习:智能测评 二.研究 脑机交互在技术层面诞生并逐渐发展,但更多的还停留在技术层面,在基于1985-2018年的SCI和SSCI期刊论文中关于“脑机接口的演化过程及其在教育领域的应用”的知识图谱分析,其脑机接口在学习过程的核心,体现为大脑和双向救护,包括人工智能技术.教育大数据分析技术.大脑-心理-计

MogileFS学习小结

大纲: 一.关于MogileFS 二.常见分布式文件系统 三.MogileFS基本原理 四.MogileFS的实现 一.关于MogileFS 当下我们处在一个互联网飞速发展的信息社会,在海量并发连接的驱动下每天所产生的数据量必然以几何方式增长,随着信息连接方式日益多样化,数据存储的结构也随着发生了变化.在这样的压力下使得人们不得不重新审视大量数据的存储所带来的挑战,例如:数据采集.数据存储.数据搜索.数据共享.数据传输.数据分析.数据可视化等一系列问题. 传统存储在面对海量数据存储表现出的力不从

pthread多线程编程的学习小结

pthread多线程编程的学习小结 程序员必上的开发者服务平台 —— DevStore pthread多线程编程整理 1 Introduction 不用介绍了吧… 2 Thread Concepts 1.     Thread由下面部分组成: a.     Thread ID b.     Stack c.     Policy d.     Signal mask e.     Errno f.      Thread-Specific Data 3 Thread Identification

1:CSS中一些@规则的用法小结 2: @media用法详解

第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下 at-rule是一个声明,为CSS提供执行或怎么表现的指令.每个声明以@开头,后紧跟一个可用的关键字,这个关键字充当一个标识符,用于表示CSS该做什么.这是一个通用的语法,尽管每个at-rule有其它语法变体.常规规则 常规规则遵循下面的语法: 复制代码 代码如下: @[KEYWORD] (RULE); @charset

varnish学习小结

大纲 一.Varnish 简介 二.Varnish 特点 三.Varnish 与 Squid 对比 四.Varnish 设计结构 五.Varnish 工作流程 六.Varnish 状态引擎(state engine) 七.安装与配置 Varnish 一.Varnish 简介 Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好. Varnish 的作者Poul-Henning Kamp是F

javascript 学习小结 (三) jQuery封装ajax尝试 by FungLeo

javascript 学习小结 (三) jQuery封装ajax尝试 by FungLeo 前言 在JS学习中,对于原生的很多东西我理解得并不透彻.但是使用jQuery来操作DOM,基本上还是非常熟练的.但是对于AJAX数据交互的处理,我不是很理解. 近期团队交给我一个后端全接口提供给我的项目.我要利用这些接口来自己组织前端代码.为了学习,我决定不使用VUE或者其他的前端框架来做.而是只使用jQuery框架,数据的部分全部使用拼接字符串的形式实现. 获取数据,显示数据,提交数据. 在这个项目中(

ExtJs学习笔记之学习小结LoginDemo

ExtJs学习小结LoginDemo 1.示例:(登录界面) <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <link rel="stylesheet" type="text/css" href="../ext-js-4.2.1/res