专栏首页LINUX阅码场宋宝华:Don Libes的expect,终端交互式编程的精神鼻祖

宋宝华:Don Libes的expect,终端交互式编程的精神鼻祖

expect

提示

阅读本文需要: 10分钟

本文难度系数:入门

如果你在期待一种编程语言,可以自动在terminal里面输入命令,并且等待terminal的输出结果,之后判断输出是否如你期待(expect),并根据terminal的输出决定下一步动作,那么expect就是体现这种精神的语言鼻祖,它是Tcl脚本语言的扩展。

假设我们要ssh登陆192.168.174.129这台电脑,它的用户名是baohua,密码也是baohua,我们要执行如下操作:

1. ssh到192.168.174.129

2. 在登陆完成后,我们敲击exit退出登陆的电脑

如果手动敲击命令,它的序列大概是这样的:

上述命令的交互过程,我们完全可以用expect来实现:

这样子看看不大懂,我们画一下映射图,基本就懂了:

说白了expect的逻辑就是:

自动敲一个命令,等terminal前一个命令的输出,等到了期待的输出,再敲一个命令.....

所以这种语言,对于嵌入式这种带串口的、网络的,这种做自动测试可以说不要太牛逼。想当年,我们在Analog Devices(ADI)的Linux Team做Blackfin Linux的时候,就是用的expect语言做自动测试的。串口上各种自动敲命令,等结果,然后再自动敲下一个命令......没日没夜地驱动嵌入式电路板让我们期待的逻辑去run。

expect的精神比较伟大,也被各种其他语言所模仿和支持,比如python里面的pexpect等:

pexcept(https://github.com/pexpect/pexpect)号称自己:

Pexpect is in the spirit of Don Libes' Expect, but Pexpect is pure Python.

上述ssh同样的功能,如果换支持pexpect的python执行,代码如下:

文中所涉及到的软件的安装:

expect语言:apt install expectpython expect:pip install pexpect

expect语言:apt install expectpython expect:pip install pexpect

expect语言:apt install expectpython expect:pip install pexpect

本文分享自微信公众号 - Linux阅码场(LinuxDev)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 算法 | KMP字符串匹配

    Python字符串str是在Python编写程序过程中,最常见的一种基本数据类型。字符串是许多单个子串组成的序列,其主要是用来表示文本。字符串是不可变数据类型,...

    算法与编程之美
  • python的异常处理

    原文链接:https://www.runoob.com/python/python-exceptions.html

    于小勇
  • HanLP 分词

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    周小董
  • python的命名空间

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    于小勇
  • python测试开发django-63.基于函数的视图(@api_view())

    上一篇讲了基于类的视图,在REST framework中,你也可以使用常规的基于函数的视图。它提供了一组简单的装饰器,用来包装你的视图函数, 以确保视图函数会收...

    上海-悠悠
  • 在知乎上学 Python - 爬虫篇

    知乎是个好地方。虽然近年来,为了吸引更多的用户,知乎的定位与早期略有点偏离。但从内容质量和专业性来说,知乎仍然是国内数一数二的知识型社区。不少同学都是通过知乎发...

    Crossin先生
  • jpype._jvmfinder.JVMNotFoundException: No JVM shared library file

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    周小董
  • 干货!MySQL 资源大全

    shlomi-noach 发起维护的 MySQL 资源列表,内容覆盖:分析工具、备份、性能测试、配置、部署、GUI 等。

    二狗不要跑
  • python操作数据库

    下载地址:https://pypi.python.org/pypi/MySQL-python/1.2.5 安装到系统即可。

    二狗不要跑
  • 连淘宝评价都不会爬,也敢说自己会爬虫

    自从上次写了一篇教师节送什么?Python教你挑选礼物,让我对淘宝的其他信息产生了产生了很大的兴趣,所以,利用中秋节假期研究了下怎么爬取淘宝商品评价。

    stormwen

扫码关注云+社区

领取腾讯云代金券