from PyQt5.QtCore import QBasicTimer
import win32api, win32con
import telnetlib
import time
import sys
import win32api, win32con
from PyQt5 import QtGui, QtCore
from PyQt5.QtCore import QThread
import untitled1, untitled
from PyQt5.QtWidgets import QApplication, QDialog, QSplashScreen
class MainDialog(QDialog):
def __init__(self, parent=None):
super(QDialog, self).__init__(parent)
self.ui = untitled1.Ui_dialog()
self.log = []
self.ui.setupUi(self)
self.ui.textEdit.setText("192.168.1.1\n"
"192.168.2.1\n")
self.ui.textEdit_2.setText("clock timezone BJ add 08:00:00\n"
"sys \n"
"ntp-service unicast-server 172.16.1.40\n"
"q\n"
"save\n"
"y")
self.ui.lineEdit.setText("admin")
self.ui.lineEdit_2.setText("admin@huawei")
def message(self):
win32api.MessageBox(0, "有问题,找信息部。此软件基于telnet协议,只对开启了telnei协议的交换机有效果", "提醒", win32con.MB_OK)
def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None:
self.ui.textEdit.clear()
self.ui.textEdit_2.clear()
def run(self):
self.child = child()
self.child.getconfig(self.ui.textEdit.toPlainText(), self.ui.lineEdit.text(), self.ui.lineEdit_2.text(),
self.ui.textEdit_2.toPlainText())
self.child.show()
class Threadclass(QThread):
signal_time = QtCore.pyqtSignal(str,int) # 信号
def __init__(self, parent=None):
super(Threadclass, self).__init__(parent)
self.succuss,self.fail=[],[]
def getconfig(self, hosts, username, password, shells):
self.hosts = hosts
self.username = username
self.password = password
self.shells = shells
def run(self) -> None:
for self.host in range(0, len(self.hosts)-1):
self.signal_time.emit(self.hosts[self.host], int((self.host +1) /(len(self.hosts)-1) * 100))
try:
self.tn = telnetlib.Telnet(self.hosts[self.host], timeout=3)
self.tn.read_until(b"Username:")
self.tn.write(self.user.encode('ascii') + b"\n")
self.tn.read_until(b"Password:")
self.tn.write(self.password.encode('ascii') + b"\n")
for self.shell in self.shells:
self.runshell(self.shell)
# read = self.tn.read_very_eager().decode("ascii")
self.succuss.append(self.hosts[self.host])
# with open("log.txt", "a") as f:
# print(read)
# f.write("success there host is: " + str(self.hosts[self.host]) + "\n")
# f.close()
self.tn.close()
except BaseException as e:
# win32api.MessageBox(0, str(e), "提醒", win32con.MB_OK)
#
# win32api.MessageBox(0, self.hosts[self.host]+"连接失败", "提醒", win32con.MB_OK)
self.fail.append(self.hosts[self.host])
if self.succuss:
win32api.MessageBox(0, self.succuss.__str__()+"连接成功,请手动结束进度条", "提醒", win32con.MB_OK)
if self.host+2 == len(self.hosts):
win32api.MessageBox(0, self.fail.__str__() + "连接失败,请手动结束进度条", "提醒", win32con.MB_OK)
self.exec()
class child(QDialog):
def __init__(self, parent=None):
super(QDialog, self).__init__(parent)
self.ui1 = untitled.Ui_Dialog()
self.ui1.setupUi(self)
# self.time = QBasicTimer()
# self.time.start(1000, self)
self.Threadclass = Threadclass()
self.Threadclass.start()
self.Threadclass.signal_time.connect(self.updateprogressBar)
def updateprogressBar(self, host, val):
self.ui1.progressBar.setValue(val)
self.ui1.label.setText(host)
def getconfig(self, hosts, username, password, shells):
self.hosts = self.getlist(hosts)
self.username = username
self.password = password
self.shells = self.getlist(shells)
self.Threadclass.getconfig(self.hosts, self.username, self.password,
self.shells)
def runshell(self, shell):
self.tn.write(bytes(shell + "\n"))
def getlist(self, text):
list = str(text).split('\n')
return list
if __name__ == '__main__':
myapp = QApplication(sys.argv)
# 创建启动界面,支持png透明图片
myDlg = MainDialog()
myDlg.show()
sys.exit(myapp.exec_())
# pyinstaller -F -i 顶立科技.ico -n "多交换机配置" -w main.py