打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
宋宝华: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 expect
python expect:pip install pexpect
如果您觉得有用,欢迎扫码打赏支持原创
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
打造自己的弱口令扫描器
宾语从句用法详解(例句丰富)(下)
Expect在口语中的典型运用
linux编程C/C++如何自动打开一个终端并且运行新程序
Python Expect模块
利用pexpect模拟ssh连接
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服