pyqt远程批量执行Linux命令程序的方法


Posted in Python onFebruary 14, 2019

写了个小程序:

功能

1.测试远程ssh连接是否成功,

2.批量执行远程ssh命令

效果如下:

pyqt远程批量执行Linux命令程序的方法

代码如下:

#-*- coding:utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui, uic
import locale
import re
import os
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import paramiko
qtCreatorFile = "test.ui" # Enter file here.
 
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
a = 0
username_list = []
ip_list = []
password_list = []
class MyApp(QtGui.QMainWindow, Ui_MainWindow):
  def __init__(self):
    QtGui.QMainWindow.__init__(self)
    Ui_MainWindow.__init__(self)
    self.setupUi(self)
    self.add.clicked.connect(self.add_info)
    self.test.clicked.connect(self.test_link)
    self.do_2.clicked.connect(self.do_command)
  def add_info(self):
    global a
    ip = self.ip.text()
    ip_list.append(ip)
    username = self.username.text()
    username_list.append(username)
    password = self.password.text()
    password_list.append(password)
    self.table.setHorizontalHeaderLabels(['ip','username','password'])
    newItem = QTableWidgetItem(ip) 
    self.table.setItem(a, 0, newItem)
     
    newItem = QTableWidgetItem(username) 
    self.table.setItem(a, 1, newItem) 
     
    newItem = QTableWidgetItem(password) 
    self.table.setItem(a, 2, newItem)
    a += 1
  def test_link(self):
    ip = str(self.ip.text())
    username = str(self.username.text())
    password = str(self.password.text())
    try:
      ssh = paramiko.SSHClient()
      ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
      ssh.connect(ip, 22, username, password)
      stdin, stdout, stderr = ssh.exec_command("who")
      print stdout.read()
      search = re.search(stdout.read(), username)
      if search:
        info = u"连接成功"
      else:
        info = u"连接失败"
    except:
      info = u"连接失败"
    print info
    self.state.setText(info)
    ssh.close()
 
  def do_command(self):
    command = str(self.command.text())
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    for i in range(len(ip_list)):
      ip = str(ip_list[i])
      username = str(username_list[i])
      password = str(password_list[i])
      ssh.connect(ip, 22, username, password)
      stdin, stdout, stderr = ssh.exec_command(command)
      info = stdout.read()
      self.result.append(info)
 
    ssh.close()
 
 
 
 
if __name__ == "__main__":
  app = QtGui.QApplication(sys.argv)
  mycode = locale.getpreferredencoding()
  code = QTextCodec.codecForName(mycode)
  QTextCodec.setCodecForLocale(code)
  QTextCodec.setCodecForTr(code)
  QTextCodec.setCodecForCStrings(code)
  window = MyApp()
  window.show()
  sys.exit(app.exec_())

以上这篇pyqt远程批量执行Linux命令程序的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python函数返回多个值的示例方法
Dec 04 Python
在Python中测试访问同一数据的竞争条件的方法
Apr 23 Python
python实现决策树ID3算法的示例代码
May 30 Python
TensorFlow实现模型评估
Sep 07 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
python selenium 执行完毕关闭chromedriver进程示例
Nov 15 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
python tkinter之 复选、文本、下拉的实现
Mar 04 Python
Django使用rest_framework写出API
May 21 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
Sep 02 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 Python
python游戏开发之pygame实现接球小游戏
Apr 22 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 #Python
python实现全盘扫描搜索功能的方法
Feb 14 #Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 #Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 #Python
Python模拟百度自动输入搜索功能的实例
Feb 14 #Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 #Python
python 多个参数不为空校验方法
Feb 14 #Python
You might like
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
javascript中数组和字符串的方法对比
2016/07/20 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
jQuery实时统计输入框字数及限制
2020/06/24 jQuery
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
python读取ini配置的类封装代码实例
2020/01/08 Python
详解Python中的分支和循环结构
2020/02/11 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
浅析HTML5 Landmark
2020/09/11 HTML / CSS
如何在C# winform中异步调用web services
2015/09/21 面试题
高中地理教学反思
2014/01/29 职场文书
观看信仰心得体会
2014/09/04 职场文书
幼师中班个人总结
2015/02/12 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
台风停课通知
2015/04/24 职场文书
小学音乐课歌曲《堆雪人》教学反思
2016/02/18 职场文书
Python函数式编程中itertools模块详解
2021/09/15 Python
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
css3 选择器
2022/05/11 HTML / CSS
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android