def download_file(self, ssh, ip, file): if file in ["", "NULL"]: self.insert_text_info(ip, 100, 'Success') return True download_dir = "{0}\\{1}".format(Global.G_DOWNLOAD_DIR, ip) filename = "{0}\\{1}".format(download_dir, Common.basename(file)) Common.mkdir(download_dir) self.insert_text_info(ip, 100, 'Downloading to {}'.format(filename)) if not SSHUtil.download_file(ssh, remote=file, local=filename): return False self.insert_text_info(ip, 100, "Download success") return True
def refresh_file_data(self, args=None): logger.debug('[timer] refresh file data start...') server_dir = model_gate.settings_data.server_dir scripts = model_gate.settings_data.refresh_file['scripts'] server_download = Global.G_SERVER_DOWNLOAD % server_dir try: for ip, data in model_gate.login_state_data.get_data().items(): ssh = data['SSH'] local_download = "{}\\{}".format(Global.G_DOWNLOAD_DIR, ip) data_dir = "{}\\__FILE_DATA__".format(local_download) Common.mkdir(local_download) Common.mkdir(data_dir) # 初始运行时先把之前已经运行的进程杀死,每次都用最新代码跑 if ip not in self.is_first_run: [ SSHUtil.exec_ret(ssh, "killall {}".format(script), True) for script in scripts ] self.is_first_run[ip] = True cmd = '' for script in scripts: cmd = "{0}\n{1}/{2}".format(cmd, server_dir, script) SSHUtil.exec_ret(ssh, cmd, True) # 再压缩DOWNLOAD目录 cmd = 'cd {0} && zip refresh_file.zip *;chmod 777 *.zip'.format( server_download) SSHUtil.exec_ret(ssh, cmd, True) # 然后下载文件 SSHUtil.download_file( ssh, "{}/refresh_file.zip".format(server_download), '{}\\refresh_file.zip'.format(local_download)) # 最后解压 Common.unzip_file( '{}\\refresh_file.zip'.format(local_download), data_dir) except Exception as e: logger.error("RefreshTimer refresh_file_impl {}".format(str(e))) logger.debug('[timer] refresh file data end')
def check_file(self): Global.G_PID_DIR = "{}\\{}".format(Global.G_RUN_DIR, Common.get_pid()) Common.mkdir(Global.G_RUN_DIR) Common.mkdir(Global.G_DOWNLOAD_DIR) Common.mkdir(Global.G_PID_DIR) logger.info(Global.G_TEXT_LOGO) for path in [ Global.G_RESOURCE_DIR, Global.G_DEPENDENCE_FILE, Global.G_SETTINGS_FILE, Global.G_SCRIPTS_DIR ]: if not Common.is_exists(path): model_gate.exception_data.set_data( "{} is not exist".format(path)) logger.error("{} is not exist".format(path)) return False return True