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




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

利用python模块paramiko在CentOS 6.3 64上搭建SFTP环境

用python实现远程登陆主机执行命令或通过sftp上传下载文件,有个很好的模块paramiko模块来演示这些功能,使用起来很方便 CentOS 6.x上的python版本默认是2.6的,为了平台兼容...
  • tao_627
  • tao_627
  • 2015年10月10日 19:37
  • 842

java 远程执行linux命令

package hb.linux;    import java.io.BufferedReader;  import java.io.IOException;  import java.io.Inp...
  • qq_29663071
  • qq_29663071
  • 2016年01月12日 10:19
  • 1657

Windwos远程执行Linux命令

远程执行的基础就是需要执行命令的2台机器可以进行通信,而通常通信的基础就是socket。基于此的协议有很多,但是可以支持命令执行的就不多了,如:telnet、ssh。所以想实现远程命令执行就要在这2个...
  • five3
  • five3
  • 2012年06月11日 11:21
  • 4124

Linux多台主机批量执行命令

参考文章:http://blog.csdn.net/liuxiao723846/article/details/453963971、首先你需要指定一台主机作为信任主机,这样从这台主机登录其他机器就不需...
  • zoombinde
  • zoombinde
  • 2016年07月13日 22:40
  • 4296

Java远程连接Linux系统并执行Linux命令

Java远程连接Linux系统并执行命令
  • caiandyong
  • caiandyong
  • 2017年01月05日 21:48
  • 4501

[PsTools]psexec.exe使用范例-执行远程电脑程序(exe、bat等)

前置条件 先下载psexec.exe,放置到C盘根目录 下载地址:http://download.csdn.net/detail/whylaughing/8885893  命令范例:(注意空格) ...
  • whylaughing
  • whylaughing
  • 2015年07月10日 11:10
  • 3032

Linux编写Shell脚本自动同步svn并发布maven项目-SSH连接远程服务

前阵子为了方便,一直把tomcat,jetty服务放在windows server上,鼠标点点点拖拖拖也不是很麻烦,但跟脚本比起来还是差了点水准,而且对于Java项目,还是部署在Linux靠谱点,Wi...
  • u013187626
  • u013187626
  • 2015年05月18日 16:31
  • 816

JAVA利用Runtime执行多条linux命令

public static void execPythonShell(File file) throws IOException {   String path = Utils.class.getCl...
  • huanghai200911
  • huanghai200911
  • 2015年06月08日 21:30
  • 4972

LUA中运行的linux命令

--linux命令 function main() --os.execute("cd /mnt/sdcard/.skynet/v2") --跳到目录 --os.execute("rm -f /mn...
  • mawendong
  • mawendong
  • 2014年06月25日 17:49
  • 843

sh, 批量执行Linux命令

step 1:创建一个sh批处理命令文件  # vim /etc/batch_ssh/install_redis.sh step 2:给当前用户,能够执行sh脚本权限 # chmod i...
  • aiwuzhi12
  • aiwuzhi12
  • 2017年03月08日 13:27
  • 519
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pyqt远程批量执行Linux命令程序
举报原因:
原因补充:

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