def record_command(self): try: if self.start_record.text() == '开始': self.download_record.setDisabled(True) self.timerDialog = timerDialog() if self.timerDialog.exec_(): self.nmon_infos = self.timerDialog.getInfos() if self.nmon_infos['name'] == '': self.showMessage("名称未输入,无法启动") return conf = config() infos = conf.sentionAll(self.name) monitor = Monitor_server() ssh = monitor.sshConnect(infos['ip'], int(infos['port']), infos['user'], conf.decrypt(infos['password'])) get_msgs = monitor.nmon_run(ssh, self.nmon_infos['name'], self.nmon_infos['time'], self.nmon_infos['tap']) self.showMessage(get_msgs) self.start_record.setText('中止') self.record_name.setText(self.nmon_infos['name'] + '.nmon') self.fileName = self.nmon_infos['name'] + '.nmon' self.timer.start((int(self.nmon_infos['time']) * int(self.nmon_infos['tap']) + 1) * 1000) self.timerDialog.destroy() else: self.cancel() except Exception as e: self.showMessage(str(e)) pass
def showWidget(self): try: conf = config() sention = self.server_listWidget.item(self.server_listWidget.currentRow()).text() info = conf.sentionAll(sention) ip = info['ip'] self.serverConfigDialog = serverConfigDialog() self.serverConfigDialog.setDict(info) self.serverConfigDialog.disable() if self.serverConfigDialog.exec_(): self.tab = simpleForm() self.tab.setIp(ip) self.tab.name = sention self.tab.checknmon() self.mointorThread = Thread() self.mointorThread.sendinfosSignal.connect(self.tab.set_data) self.mointorThread.sendExptionSignal.connect(self.tab.showMessage) self.tab.stop.connect(self.mointorThread.__del__) self.tab.nameSignal.connect(lambda: self.mointorThread.getInfos(sention)) # 通过信号槽设置名称 self.tab.nameSignal.emit() self.tabWidget.addTab(self.tab, sention) self.tabWidget.setCurrentWidget(self.tab) self.mointorThread.start() self.serverConfigDialog.destroy() except Exception as e: self.Tips("线程启动异常,请重试或联系管理员")
def setDict(self, dict): conf = config() self.nameEdit.setText(dict['name']) self.ipEdit.setText(dict['ip']) self.portEdit.setText(dict['port']) self.userEdit.setText(dict['user']) self.passwordEdit.setText(conf.decrypt(dict['password']))
def loadConfig(self): try: conf = config() SentionList = conf.getSection() self.server_listWidget.clear() self.server_listWidget.addItems(SentionList) except Exception as e: self.Tips("配置文件出现异常,请重置配置文件")
def getInfos(self, name): try: conf = config() infos = conf.sentionAll(name) infos['password'] = conf.decrypt(infos['password']) self.infos = infos except Exception as e: self.sendDownExptionSignal.emit("下载异常,请重试")
def unlock(self): conf = config() if self.password_lineEdit.text() == conf.decrypt(conf.getOption('sysconfig', 'password')): WindowShow.show() self.close() else: self.Tips("密码错误,请重试") self.widget.setStyleSheet("border-image: url(:/icon/error_password.jpg);")
def getInfos(self, name): try: conf = config() infos = conf.sentionAll(name) infos['password'] = conf.decrypt(infos['password']) self.infos = infos except Exception as e: self.sendExptionSignal.emit("配置读取异常,请关闭tab页并检查配置")
def getDict(self): conf = config() info = {} info['cpuwarnline'] = str(self.CPU_spinBox.value()) info['memwarnline'] = str(self.MEM_spinBox.value()) info['diskwarnline'] = str(self.DISK_spinBox.value()) info['simplerating'] = str(self.Simple_Rate_spinBox.value()) info['password'] = conf.encrypt(self.password_lineEdit.text()) return info
def getDict(self): conf = config() info = {} info['name'] = self.nameEdit.text() info['ip'] = self.ipEdit.text() info['port'] = self.portEdit.text() info['user'] = self.userEdit.text() info['password'] = conf.encrypt(self.passwordEdit.text()) return info
def sysConfigDialogShow(self): try: conf = config() self.sysConfigDialog = sysConfigDialog() if self.sysConfigDialog.exec_(): infos = self.sysConfigDialog.getDict() conf.cmdSection('sysconfig', infos) self.sysConfigDialog.destroy() except Exception as e: self.Tips("保存配置异常,请稍后重试")
def serverAdd_Open(self): try: conf = config() self.serverConfigDialog = serverConfigDialog() if self.serverConfigDialog.exec_(): infos = self.serverConfigDialog.getDict() conf.cmdSection(infos['name'], infos) self.serverConfigDialog.destroy() self.loadConfig() except Exception as e: self.Tips("保存配置异常,请稍后重试")
def loadConfig(self): try: conf = config() sysconfig = conf.sentionAll('sysconfig') self.CPU_spinBox.setValue(int(sysconfig['cpuwarnline'])) self.MEM_spinBox.setValue(int(sysconfig['memwarnline'])) self.DISK_spinBox.setValue(int(sysconfig['diskwarnline'])) self.Simple_Rate_spinBox.setValue(int(sysconfig['simplerating'])) self.password_lineEdit.setText(conf.decrypt(sysconfig['password'])) except Exception as e: self.Tips("配置文件出现异常,请重置配置文件")
def cancel(self): try: conf = config() infos = conf.sentionAll(self.name) monitor = Monitor_server() ssh = monitor.sshConnect(infos['ip'], int(infos['port']), infos['user'], conf.decrypt(infos['password'])) get_msg = monitor.nmon_cancel(ssh, self.nmon_infos['name'], self.nmon_infos['time'], self.nmon_infos['tap']) self.timer.stop() if get_msg == '取消成功': self.start_record.setText('开始') self.showMessage('已中止nmon运行') except Exception as e: self.showMessage(str(e))
def totalrun(self): try: conf = config() if self.added_listWidget.count() == 0: self.Tips("未添加服务器") return if self.groupName_lineEdit.text() == '': self.Tips("未输入组名") return self.remove_pushButton.setDisabled(True) self.add_pushButton.setDisabled(True) self.tap_spinBox.setDisabled(True) self.time_spinBox.setDisabled(True) self.download_pushButton.setDisabled(True) self.groupName_lineEdit.setDisabled(True) self.start_pushButton.setDisabled(True) self.time_progressBar.setValue(0) for i in range(self.added_listWidget.count()): sention = self.added_listWidget.item(i).text() infos = conf.sentionAll(sention) monitor = Monitor_server() ssh = monitor.sshConnect(infos['ip'], int(infos['port']), infos['user'], conf.decrypt(infos['password'])) if monitor.nmon_checked(ssh) == False: text = monitor.sftp_upload_file(infos['ip'], int(infos['port']), infos['user'], conf.decrypt(infos['password'])) get_msgs = monitor.nmon_run(ssh, self.groupName_lineEdit.text() + str(i), str(self.time_spinBox.value()), str(self.tap_spinBox.value())) if get_msgs != '启动运行,请稍后': self.Tips('批量启动异常,请检查服务器配置,并重试') self.remove_pushButton.setDisabled(False) self.add_pushButton.setDisabled(False) self.tap_spinBox.setDisabled(False) self.time_spinBox.setDisabled(False) self.groupName_lineEdit.setDisabled(False) self.start_pushButton.setDisabled(False) monitor.sshClose(ssh) self.time_progressBar.setMaximum((self.time_spinBox.value() * self.tap_spinBox.value())) self.timer.start(1000) self.Tips('已启动nmon,请稍候') self.totalFile_label.setText(str(self.added_listWidget.count())) except Exception as e: self.Tips(str(e)) self.remove_pushButton.setDisabled(False) self.add_pushButton.setDisabled(False) self.tap_spinBox.setDisabled(False) self.time_spinBox.setDisabled(False) self.groupName_lineEdit.setDisabled(False) self.start_pushButton.setDisabled(False)
def serverDel(self): try: conf = config() sention = self.server_listWidget.item(self.server_listWidget.currentRow()).text() msg = QMessageBox.question(self, "删除警告", "你确定删除吗?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) # 这里是固定格式,yes/no不能动 # 判断消息的返回值 if msg == QMessageBox.Yes: conf.delSection(sention) else: return self.loadConfig() except: pass
def serverModif_Open(self): try: conf = config() self.serverConfigDialog = serverConfigDialog() sention = self.server_listWidget.item(self.server_listWidget.currentRow()).text() info = conf.sentionAll(sention) self.serverConfigDialog.setDict(info) self.serverConfigDialog.disableName() if self.serverConfigDialog.exec_(): infos = self.serverConfigDialog.getDict() conf.cmdSection(infos['name'], infos) self.serverConfigDialog.destroy() self.loadConfig() except: pass
def uploadfile(self): try: conf = config() infos = conf.sentionAll(self.name) monitor = Monitor_server() text = monitor.sftp_upload_file(infos['ip'], int(infos['port']), infos['user'], conf.decrypt(infos['password'])) if text == '上传成功': self.showMessage('文件已上传') self.nmon_label.setText('当前服务器已安装nmon,可进行性能监控') self.upload_nmon.setDisabled(True) self.start_record.setDisabled(False) else: self.nmon_label.setText('当前服务器安装nmon失败,请点击再次上传') except Exception as e: self.showMessage(str(e)) pass
def checknmon(self): try: conf = config() infos = conf.sentionAll(self.name) monitor = Monitor_server() ssh = monitor.sshConnect(infos['ip'], int(infos['port']), infos['user'], conf.decrypt(infos['password'])) nmon_checked = monitor.nmon_checked(ssh) if nmon_checked: self.nmon_label.setText('当前服务器已安装nmon,可进行性能监控') self.upload_nmon.setDisabled(True) self.start_record.setDisabled(False) else: self.nmon_label.setText('当前服务器未安装nmon,请点击上传') monitor.sshClose(ssh) except Exception as e: self.showMessage(str(e)) pass
def cancel(self): try: conf = config() for i in range(self.added_listWidget.count()): sention = self.added_listWidget.item(i).text() infos = conf.sentionAll(sention) monitor = Monitor_server() ssh = monitor.sshConnect(infos['ip'], int(infos['port']), infos['user'], conf.decrypt(infos['password'])) get_msgs = monitor.nmon_cancel(ssh, self.groupName_lineEdit.text() + str(i), str(self.time_spinBox.value()), str(self.tap_spinBox.value())) monitor.sshClose(ssh) self.timer.stop() except Exception as e: self.Tips(str(e)) self.close()
def run(self): conf = config() for i in range(len(self.serverList)): try: infos = conf.sentionAll(self.serverList[i]) infos['password'] = conf.decrypt(infos['password']) t = paramiko.Transport((infos['ip'], int(infos['port']))) t.connect(username=infos['user'], password=infos['password']) sftp = paramiko.SFTPClient.from_transport(t) sftp.stat('/home/monitor/' + self.fileName + str(i) + '.nmon') sftp.get('/home/monitor/' + self.fileName + str(i) + '.nmon', 'temp/' + self.fileName + str(i) + '.nmon') t.close() self.sendDownMsgSignal.emit( 'success', int((i + 1) / len(self.serverList) * 100)) except Exception as e: self.sendDownMsgSignal.emit('failed', 0.0) t.close() pass
def __init__(self): super().__init__() conf = config() self.time = int(conf.getOption('sysconfig', 'simplerating')) self.working = True self.infos = {}
def setWarnLine(self): conf = config() self.CpuHLine.setPos(int(conf.getOption('sysconfig', 'cpuwarnline'))) self.MemHLine.setPos(int(conf.getOption('sysconfig', 'memwarnline'))) self.DiskHLine.setPos(int(conf.getOption('sysconfig', 'diskwarnline')))