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 相关文章推荐
通过mod_python配置运行在Apache上的Django框架
Jul 22 Python
简单谈谈python的反射机制
Jun 28 Python
Python 通配符删除文件的实例
Apr 24 Python
Python之批量创建文件的实例讲解
May 10 Python
Python调用服务接口的实例
Jan 03 Python
Python3 实现串口两进程同时读写
Jun 12 Python
python 实现return返回多个值
Nov 19 Python
Tensorflow的常用矩阵生成方式
Jan 04 Python
mac在matplotlib中显示中文的操作方法
Mar 06 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
使用python编写一个语音朗读闹钟功能的示例代码
Jul 14 Python
matplotlib bar()实现百分比堆积柱状图
Feb 24 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
超级简单的发送邮件程序
2006/10/09 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
概述BootStrap中role="form"及role作用角色
2016/12/08 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
vue-router 按需加载 component: () => import() 报错的解决
2020/09/22 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
[09:43]DOTA2每周TOP10 精彩击杀集锦vol.5
2014/06/25 DOTA
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
Python打印斐波拉契数列实例
2015/07/07 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
python重试装饰器的简单实现方法
2019/01/31 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
自荐信如何“自荐”
2013/10/24 职场文书
《称象》教学反思
2014/04/25 职场文书
铁路安全事故反思
2014/04/26 职场文书
硕士生找工作求职信
2014/07/05 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
工作检讨书范文
2015/01/23 职场文书
解约证明模板
2015/06/19 职场文书
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA