def inside_records_export(): if "park_name" in request.form: park_name = request.form.get("park_name") ssh = frp.get_conn(conn_name=park_name) else: host = request.form.get('hostname') port = int(request.form.get('port')) ssh, _ = try_login(host=host, port=port) end_time = str(request.form.get('end_time')) try: path = os.path.join( os.path.dirname( os.path.dirname(os.path.dirname(os.path.dirname(__file__)))), "static", "scripts", "inside_records_export.py") job = RemoteScriptJob(ssh, path) job.run((end_time, )) for out_put in job.read_all(): if "FilePath" in out_put.str: f_path = out_put.str[10:] sftp = ssh.open_sftp() tool_run_time = time.strftime('%Y%m%d_%H%M%S', time.localtime()) l_path = 'static/download/inside_records_%s.xlsx' % str( tool_run_time) sftp.get(f_path, l_path) return json.dumps({"result": 0, "download_url": l_path}) return json.dumps({"result": 1}) except Exception as e: return json.dumps({"result": str(e)})
def get_log(log_type, log_date, park_name, force_download=False, ssh_client=None): """ :param park_name: :param log_type: :param log_date: :param force_download: 是否强制重新下载日志(如果本地已缓存),常用于刷新当天日志 :param ssh_client: :return: file path """ if not ssh_client: ssh_client = frp.get_conn(park_name) if ssh_client is None: return None arm_ip = get_local_ip(ssh_client) log_dir = park_log_path(park_name, arm_ip) if not force_download and has_log(park_name, arm_ip, log_type, log_date): return os.path.join(log_dir, log_file_name(log_type, log_date)) if not os.path.exists(log_dir): os.makedirs(log_dir) return fetch(ssh_client.open_sftp(), log_type, log_date, log_dir)
def api_all_arm_restart(): if "park_name" in request.form: park_name = request.form.get("park_name") ssh, _ = frp.get_conn(conn_name=park_name) if "current_ip" in request.form: current_ip = request.form.get("current_ip") ssh, _ = make_tunnel(ssh, current_ip) _, stdout, _ = ssh.exec_command("cd /home/park;sh restart.sh") return json.dumps({"result": 0}) else: host = request.form.get('hostname') port = int(request.form.get('port')) ssh, _ = try_login(host=host, port=port) try: path = os.path.join( os.path.dirname( os.path.dirname(os.path.dirname(os.path.dirname(__file__)))), "static", "scripts", "all_arm_restart.py") job = RemoteScriptJob(ssh, path) job.run() for out_put in job.read_all(): if "success" in out_put.str: return json.dumps({"result": 0}) return json.dumps({"result": 1}) except Exception as e: return json.dumps({"result": str(e)})
def file_upload(): file = request.files.get("file") upload_path = request.form.get("path") version = request.form.get("version") file_name = file.filename if "park_name" in request.form: park_name = request.form.get("park_name") ssh = frp.get_conn(conn_name=park_name) else: host = request.form.get('hostname') port = int(request.form.get('port')) ssh, _ = try_login(host=host, port=port) replace_path = "/usr/local/lib/python2.7/dist-packages/irain_park-%s-py2.7.egg%s" % ( version, upload_path) def work(ssh_tunnel, ip, verison): ssh_tunnel.exec_command("cd %s;mv %s %s_old" % (replace_path, file_name, file_name)) sftp = ssh_tunnel.open_sftp() sftp.putfo(file, replace_path + "/%s" % file_name, file_size=10248) try: run_all_arm(ssh, work) except Exception as e: return json.dumps("restart failuer: %s\n%s" % (e, traceback.format_exc())) return json.dumps({"result": 0})
def test(): os.chdir('../../../') from log_fetch import IRainLogType import datetime ssh_client, _ = frp.get_conn(u'凯德东') tunnel, _ = make_tunnel(ssh_client, '192.168.55.247') print get_log(IRainLogType.PARK_OUT, datetime.date.today(), u'凯德东', force_download=True, ssh_client=tunnel)
def api_disk_usage(): if "park_name" in request.args: current_ip = request.args.get("current_ip") conn, _ = frp.get_conn(request.args.get('park_name')) ssh, _ = make_tunnel(conn, current_ip) else: host = request.args.get('hostname') port = int(request.args.get('port')) ssh, _ = try_login(host=host, port=port) usage = disk_usage(ssh) return jsonify({"timestamp": int(time.time()), "usage": usage})
def _handle_one_park(p_name): client = None try: client, version = frp.get_conn(p_name) if version == 3: _v3(client, p_name) elif version == 2: print 'impossible v2' else: print 'impossible v?' return except Exception, err: return
def all_arm_health_check(): if "park_name" in request.form: park_name = request.form.get('park_name') ssh = frp.get_conn(conn_name=park_name) else: host = request.form.get('hostname') port = int(request.form.get('port')) ssh, _ = try_login(host=host, port=port) try: j = HealthCheckJob(ssh) jobsystem.add_job(j) jobsystem.run(j.job_id) except Exception, e: return json.dumps({"code": 1, "result": str(e)})
def _handle_one_park(info): client = None try: client, version = frp.get_conn(info['name']) if version == 3: _v3(client, info) elif version == 2: _v2(client, info) else: safe_log('%s self: miss' % info['name']) return except Exception, err: safe_log(str(err)) return
def api_net_usage(): if "park_name" in request.args: current_ip = request.args.get("current_ip") conn, _ = frp.get_conn(request.args.get('park_name')) ssh, _ = make_tunnel(conn, current_ip) else: host = request.args.get('hostname') port = int(request.args.get('port')) ssh, _ = try_login(host=host, port=port) usage = net_inout_bytes(ssh) return jsonify({ "timestamp": int(time.time()), "inbound": usage[0], "outbound": usage[1] })
def test(): from src.frp.frp import frp from job_system import jobsystem import os from src.utils.quick import make_tunnel os.chdir('../../') conn, _ = frp.get_conn(u'凯德东') tunnel, _ = make_tunnel(conn, '192.168.55.247') j = RemoteScriptJob(tunnel, 'static/scripts/park_info_extract.py') jobsystem.add_job(j) # jobsystem.start_job(j.job_id, ('陕A326CL', '"2018-06-10 16:23:03"')) jobsystem.run(j.job_id, ('陕AQ22K8', '"2018-06-06 00:17:20"')) for log in jobsystem.read_all(j.job_id): print log.str
def _handle_one_park(info): client = None try: client, version = frp.get_conn(info['name']) if version == 3: _v3(client, info) elif version == 2: _v2(client, info) else: log(('MISS %s\n' % info['name']).encode('utf-8')) return except Exception, err: log(('FAIL %s %s %s\n' % (info['name'], str(err), traceback.format_exc().replace( '\n', ' '))).encode('utf-8')) return
def api_get_arm_ip_list(): park_name = request.args.get("park_name") try: conn, version = frp.get_conn(park_name) if version == 3: path = os.path.join('static', 'scripts', 'get_all_arm_ip.py') job = RemoteScriptJob(conn, path) job.run() ip_list = [] for out_put in job.read_all(): if out_put.log_type == LogType.INFO: ip_list.append(out_put.str.strip()) return json.dumps({"result": ip_list}) else: return json.dumps({"code": 1, "result": u'不支持v2车场'}) except Exception as e: return json.dumps({"result": str(e)})
def db_backup(): if "park_name" in request.form: park_name = request.form.get("park_name") ssh = frp.get_conn(conn_name=park_name) else: host = request.form.get('hostname') port = int(request.form.get('port')) ssh, _ = try_login(host=host, port=port) try: path = os.path.join( os.path.dirname( os.path.dirname(os.path.dirname(os.path.dirname(__file__)))), "static", "scripts", "v3_db_backup.py") j = jobsystem.create_rs_job(ssh, path) jobsystem.run(j) while not jobsystem.is_finished(j): time.sleep(1) except Exception, e: return json.dumps({"code": 1, "result": str(e)})
def extend_auth_time(): if "park_name" in request.form: park_name = request.form.get("park_name") ssh = frp.get_conn(conn_name=park_name) else: host = request.form.get('hostname') port = int(request.form.get('port')) ssh, _ = try_login(host=host, port=port) try: path = os.path.join( os.path.dirname( os.path.dirname(os.path.dirname(os.path.dirname(__file__)))), "static", "scripts", "set_more_validity_time.py") job = RemoteScriptJob(ssh, path) jobsystem.run(job) for out_put in job.read_all(): if "success" in out_put.str: return json.dumps({"result": 0}) return json.dumps({"result": 1}) except Exception as e: return json.dumps({"result": str(e)})
def test(): from src.frp.frp import frp conn, _ = frp.get_conn('凯德东') for out in execute_shell(conn, 'll'): print out