前言
最近在实现从一个树莓派获取另一个树莓派中的文件夹里的相片,对速度没有极致的要求,综合考虑就用了python中的pexpect库。
一、pexpect库是什么?
pexpect 是 Python 语言的类 Expect 实现,Expect 程序主要用于人机对话的模拟,就是那种系统提问,人来回答 yes/no ,或者账号登录输入用户名和密码等等的情况。简单理解就是Pexpect能够产生子应用程序并控制他们,能够通过期望模式对子应用的输出做出反应。Pexpect的主要特点是需要Python的基本库pty,这个库只有在类Unix系统上才有。Pexpect使用在自动交互的应用,例如SSH等等。官方文档链接:核心pexpect组件
其实我们最后要用pexpect实现Linux下的scp协议!
二、使用步骤
1.关键代码
代码如下(示例):
ip = "192.168.xxx.xxx" #你的IP地址
port = 22 # 你的端口
username = "pi" #你的用户名字
password = "xxxxxx" #你的密码
remote_path = '/home/pi/Desktop/photo' #获取文件位置
local_path = '/home/pi/Desktop' #保存位置
password_key = '.*assword.*'
command = f'scp -r {username}@{ip}:{remote_path} {local_path}'
execute = pexpect.spawn(command)
execute.expect(password_key)
execute.sendline(password)
execute.expect(pexpect.EOF)
2.实验结果
写了一个pyqt5的操作界面,点击获取就可以通过scp协议获取另一个虚拟机上的文件啦!
总结
pexpect不仅可以帮助我们实现在Linux下的scp协议,也可以帮我们实现多种自动化指令!