python-pyqt5-ssh执行命令或获取实时的返回结果并将结果刷新到UI界面

【此篇为项目开发过程记录,希望能帮助到遇到同样问题的小伙伴】

功能需求:

在pyqt5 绘制的界面上,实时获取ssh执行的命令的返回结果并刷新UI

 

难点:

主要分为两大块

Q1. 实时获取ssh执行命令的结 

Q2. 实时刷新UI

 

实现:

已实现,主要思路:

Q1: 使用paramiko invoke_shell 中的 recv 获取命令实时结果

Q2:自定义类继承于QThread, 使用signal传递命令结果,并刷新至UI

 

实现代码挖坑待有空更新。

 

踩坑记录:

 

1. 如何判断命令已经执行完成

channel.recv_ready() 判断的不准确,当命令隔段时间没有输出时就会认为已经执行完成了,不准确。

使用exit_status 等方法判断,经测试都不是想要的结果,UI会hang住。

最后我是通过不断获取命令输出,直到输出我定义好的执行完成的string时才判断为执行完成。

不知道有没有更好的方法呢。

 

2. TypeError: invalid result from Thread.run()

这里是我在自定义线程类的run方法里写了 return 返回值

结果执行过程中,最后程序会崩溃退出 

调试了半天,最后发现把run方法里的返回值去掉就不会出现这个错误了。

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值