python pexpect安装

本文详细记录了解决在Ubuntu上安装pexpect模块遇到的错误过程,包括安装ptyprocess模块以解决依赖问题。

安装

https://pypi.python.org/pypi/pexpect 
下载pexpect 4.0.1 
放到ubuntu中解压 
tar -xzvf pexpect 4.0.1.tar.gz 
到达相应路径 
python ./setup.py install 
即可安装 
安装时候报了个错

File "/usr/local/lib/python2.7/dist-packages/pexpect/_async.py", line 19
    transport, pw = yield from asyncio.get_event_loop()\
                             ^
SyntaxError: invalid syntax

查了查没结果 
直接进入python环境import pexpect试试 
发现有问题

>>> import pexpect
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pexpect/__init__.py", line 75, in <module>
    from .pty_spawn import spawn, spawnu
  File "pexpect/pty_spawn.py", line 11, in <module>
    import ptyprocess
ImportError: No module named ptyprocess

少了个模块, 
https://pypi.python.org/pypi/ptyprocess#downloads 
下了个ptyprocess 
一样解压,安装, 
之后import pexpect没问题,可以用了。

### 使用 `pexpect` 模块进行交互式命令行操作 #### 创建子进程并发送指令 为了启动一个新的子进程并与之通信,可以使用 `spawn` 方法。此方法接受想要运行的程序及其参数作为输入。 ```python import pexpect child = pexpect.spawn('/bin/bash', ['-c', 'echo Hello World']) print(child.read().decode()) ``` 这段代码创建了一个新的 Bash shell 实例,并传递了一条简单的 echo 命令给它[^4]。 #### 处理预期输出 当与外部应用程序互动时,通常不知道对方会返回什么确切的信息。因此,在编写脚本之前先考虑好可能遇到的各种情况是很重要的。这可以通过调用 expect() 函数来实现,该函数允许指定多个模式匹配选项以及相应的超时期限。 ```python child = pexpect.spawn('ssh user@hostname') index = child.expect(['yes/no', 'assword:', pexpect.EOF], timeout=30) if index == 0: child.sendline('yes') # 对于新主机密钥确认提示回应 "yes" elif index == 1: child.sendline('mypassword') # 发送密码以响应身份验证请求 else: print("Connection failed or no password required.") ``` 上述例子展示了如何处理 SSH 登录过程中可能出现的不同类型的提示信息[^5]。 #### 执行远程命令 一旦建立了连接并且进入了目标系统的 Shell 环境之后,就可以继续向其发出其他命令了。需要注意的是,某些长时间运行的任务可能会因为默认设置的时间限制而提前终止;这时应该适当调整时间间隔以适应实际需求。 ```python child.sendline('ls -la') # 向已建立好的SSH session发送列表目录命令 child.expect('# ') # 等待直到看到下一个命令行符表示上一条命令已完成执行 output = child.before.decode() print(output.strip()) # 输出结果去除多余空白字符后显示出来 ``` 对于那些预计耗时较长的操作(例如文件传输),记得增加合理的等待周期以免中途被打断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值