pyqt远程批量执行Linux命令程序

原创 2017年01月02日 21:31:51

写了个小程序:

功能

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

2.批量执行远程ssh命令


效果如下:


代码如下:

#-*- 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_())





            
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Java程序执行远程linux命令

此程序的目的是执行远程机器上的Shell脚本。 【环境参数】 远程机器IP:10.1.84.18 用户名:root 密码:root Shell脚本的路径:/kettle6.0/data-...

利用python fabric模块写的批量操作远程主机脚本(命令执行,上传、下载文件)

最近在学习python,借助fabric模块写了个批量操作服务器的脚本,在此分享给大家,如有不足之处,欢迎大家指正 准备工作: 安装python 2.6.5: yum -y inst...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

python写的批量操作远程主机脚本(命令执行,上传、下载文件)

最近在学习python,借助fabric模块写了个批量操作服务器的脚本,在此分享给大家,如有不足之处,欢迎大家指正。   最近在学习python,借助fabric模块写了个批量操作服务器的脚本,在此...

python写的批量操作远程主机脚本(命令执行,上传、下载文件)

最近在学习python,借助fabric模块写了个批量操作服务器的脚本,在此分享给大家,如有不足之处,欢迎大家指正 准备工作: 安装python 2.6.5: yum -y install re...

python写的批量操作远程主机脚本(命令执行,上传、下载文件)

python写的批量操作远程主机脚本(命令执行,上传、下载文件) 2011-04-28 12:53:44 标签:服务器 脚本 ssh python 集中化管理 原创作品,允许转载...

pyqt 批量ping一个网段 返回结果 的程序 (加了个界面 效果不理想)

qt生成的界面: # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'ping_ui.ui' ...

linux下nohup命令——让程序在远程主机后台运行

最近做的一个项目,需要登录到远程主机进行运行调试,采取的是talent远程登录。进行了几次实验后发现当运行程序后关闭终端即关闭talent登录后程序有时候也会停止运行,这让我很苦恼,本来想采取守护进程...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)