服务器可以pyqt显示吗,PyQt+socket实现远程操作服务器的方法示例

该博客介绍了开发一个GUI工具的需求,旨在替代浏览器登录执行服务器命令。工具设计包括输入IP、用户名、密码和命令的界面,提供默认值和自动补全功能,以提高测试人员的工作效率。通过QtDesigner创建界面,并使用socket进行服务器交互,显示执行结果。目前代码实现了界面设计,但自动补全和命令历史保存功能尚未实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来需求了。。干活啦。。

需求内容

部分时候由于缓存刷新、验证码显示不出来或者浏览器打不开或者打开速度很慢等原因,导致部分测试同事不想使用浏览器登录服务器执行命令。 期望有小工具可以替代登录浏览器的操作,直接发送指令到服务器执行并将执行结果返回。

需求设计

1、开发界面,方便用户输入IP、用户名、密码以及执行的命令。

2、IP、用户名、密码和命令输入提供默认值。特别是用户名和密码,对于测试服务器来说,通常都是固定的。

3、IP、命令行输入框可以自动补全用户输入。自动补全常用IP、命令行可以提高操作效率。

4、可以自动保存用户执行成功的IP、命令行。用于完善自动补全命令(本文代码未实现)。

需求设计

1、使用Qt Designer实现界面开发。开发后界面参考如下:

ab43fe81dc83350fb7a1b28375251d3d.png

2、使用socket程序登录服务器并执行命令,并将结果显示在界面文本框中。

代码实现(程序可以直接复制运行)

1、使用Qt Designer实现界面开发。拖动4个label+4个输入框+1个按钮+1个textBrowser到主界面。开发后界面同需求设计中的截图。

2、使用pyuic5 -o commandtools.py commandtools.ui指令将.ui文件转换成.py文件。

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'commandTools.ui'

#

# Created by: PyQt5 UI code generator 5.11.3

#

# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):

def setupUi(self, Form):

Form.setObjectName("Form")

Form.resize(483, 347)

self.ip_label = QtWidgets.QLabel(Form)

self.ip_label.setGeometry(QtCore.QRect(30, 20, 16, 16))

font = QtGui.QFont()

font.setBold(True)

font.setWeight(75)

self.ip_label.setFont(font)

self.ip_label.setObjectName("ip_label")

self.ip_lineEdit = QtWidgets.QLineEdit(Form)

self.ip_lineEdit.setGeometry(QtCore.QRect(50, 20, 101, 20))

self.ip_lineEdit.setObjectName("ip_lineEdit")

self.username_label = QtWidgets.QLabel(Form)

self.username_label.setGeometry(QtCore.QRect(160, 20, 61, 16))

font = QtGui.QFont()

font.setBold(True)

font.setWeight(75)

self.username_label.setFont(font)

self.username_label.setObjectName("username_label")

self.username_lineEdit = QtWidgets.QLineEdit(Form)

self.username_lineEdit.setGeometry(QtCore.QRect(220, 20, 71, 20))

self.username_lineEdit.setObjectName("username_lineEdit")

self.password_label = QtWidgets.QLabel(Form)

self.password_label.setGeometry(QtCore.QRect(300, 20, 61, 16))

font = QtGui.QFont()

font.setBold(True)

font.setWeight(75)

self.password_label.setFont(font)

self.password_label.setObjectName("password_label")

self.password_lineEdit = QtWidgets.QLineEdit(Form)

self.password_lineEdit.setGeometry(QtCore.QRect(360, 20, 80, 20))

self.password_lineEdit.setObjectName("password_lineEdit")

self.command_label = QtWidgets.QLabel(Form)

self.command_label.setGeometry(QtCore.QRect(30, 70, 51, 16))

font = QtGui.QFont()

font.setBold(True)

font.setWeight(75)

self.command_label.setFont(font)

self.command_label.setObjectName("command_label")

self.command_lineEdit = QtWidgets.QLineEdit(Form)

self.command_lineEdit.setGeometry(QtCore.QRect(90, 70, 251, 20))

self.command_lineEdit.setObjectName("command_lineEdit")

self.result_textBrowser = QtWidgets.QTextBrowser(Form)

self.result_textBrowser.setGeometry(QtCore.QRect(30, 120, 410, 201))

self.result_textBrowser.setObjectName("result_textBrowser")

self.run_Button = QtWidgets.QPushButton(Form)

self.run_Button.setGeometry(QtCore.QRect(360, 70, 80, 23))

self.run_Button.setObjectName("run_Button")

self.retranslateUi(Form)

QtCore.QMetaObject.connectSlotsByName(Form)

def retranslateUi(self, Form):

_translate = QtCore.QCoreApplication.translate

Form.setWindowTitle(_translate("Form", "cmdTool"))

self.ip_label.setText(_translate("Form", "IP"))

self.ip_lineEdit.setText(_translate("Form", "127.0.0.1"))

self.username_label.setText(_translate("Form", "username"))

self.username_lineEdit.setText(_translate("Form", "admin"))

self.password_label.setText(_translate("Form", "password"))

self.password_lineEdit.setText(_translate("Form", "Winovs12!"))

self.command_label.setText(_translate("Form", "Command"))

self.command_lineEdit.setText(_translate("Form", "LST LOG"))

self.run_Button.setText(_translate("Form", "Run"))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值