コード例 #1
0
def follow_monitor_task():
    
        linuxInfo = ct.get_server_config('./config/check_follow_config.txt')
        
        check_flag = 0
        for info in linuxInfo: 
            hostip = info[0]
            try:
                file_checker = rfc.remote_file_check(info)
                res_file = file_checker.check_follow()
                if res_file[:5] != 'Error':
                    msg = "ok:系统 %s 跟投费率优惠文件检查成功,文件名[%s]" % (hostip,res_file)
                    logger.info(msg)
                    check_flag += 1
                    #20200526正常状态不再发短信
                    #ct.send_sms_control('NoLimit', msg)
                else:
                    msg = "Error:系统 %s 跟投费率优惠文件检查失败 失败的原因:%s" % (hostip, res_file[6:])
                    logger.error(msg)
                    ct.send_sms_control('NoLimit', msg)
                    
            except Exception:
                msg = "Error:系统 %s 跟投费率优惠文件检查失败,出现异常,请查看服务器日志信息!" % hostip
                logger.error(msg, exc_info=True)
                ct.send_sms_control('NoLimit', msg)
        if check_flag != 0 and check_flag == len(linuxInfo):
            logger.info(u"OK:跟投费率优惠文件数据成功!")
        else:
            logger.warning(u"Error:跟投费率优惠文件检查数据失败!")
コード例 #2
0
def alltask():

    linuxInfo = ct.get_server_config('./config/server_status_config.txt')

    try:
        ms = MonitorServer(linuxInfo)
        ms.monitor_run()
        check_result_list = ms.Check_flag_list
        #        print "check_result_list:", check_result_list
        if len(check_result_list) == 0:
            check_result = False
        else:
            check_result = (sum(check_result_list) == len(check_result_list))
#        print "check_result: ", check_result
    except Exception as e:
        check_result = False
        msg = str(e)
        logger.error(msg)

    logger.info(
        "************************The Monitor Result: ************************")
    if check_result:
        logger.info("All Server is OK")
    else:
        msg = "error: Basic Monitor is Worning, Please Check it!"
        logger.error(msg)
        #        ct.fortunesms(msg)
        sysstr = platform.system()
        if sysstr == "Windows":
            ct.readTexts("Basic Monitor is Worning")


#        else:
#            ct.send_mail(msg,"Failed_Basic_Monitor")
    ct.generate_file(check_result, 'Basic_Monitor')
コード例 #3
0
def sjdr_monitor_task():

        linuxInfo = ct.get_server_config('./config/check_sjdr_config.txt')
        
        check_flag = 0
        for info in linuxInfo: 
            try:
                hostip = info[0]
                file_checker = rfc.remote_file_check(info)
                error_list = file_checker.check_sdjr()
                if len(error_list) == 0:
                    msg = "ok:系统 %s 盘后当天的节点委托回传数据检查成功" % hostip
                    logger.info(msg)
                    check_flag += 1
                else:
                    msg = "系统 %s 盘后当天的节点委托回传数据检查失败 失败的文件列表:%s " % (hostip, ';'.join(error_list))
                    logger.error(msg)
                    ct.send_sms_control('NoLimit', msg)
                    
            except Exception:
                logger.error("查询席位代码失败,出现异常,请查看服务器日志信息!", exc_info=True)
                ct.send_sms_control('xwdm', "查询席位代码失败,出现异常,请查看服务器日志信息!")
        if check_flag != 0 and check_flag == len(linuxInfo):
            logger.info(u"OK:检查盘后当天的节点委托回传数据成功!")
        else:
            logger.warning(u"Error:检查盘后当天的节点委托回传数据失败!")
コード例 #4
0
def ping_monitor_task():

    linuxInfo = ct.get_server_config('./config/server_ping_config.txt')
    try:
        ms = MonitorServer(linuxInfo)
        ms.ping_server_monitor()
        check_result_list = ms.ping_Check_flag_list
        if len(check_result_list)==0:
            check_result =False
        else:
            check_result = (sum(check_result_list)==len(check_result_list))
#        print "check_result: ", check_result
    except Exception as e:
        check_result = False
        msg = str(e)
        logger.warning(msg)

    if check_result:
        logger.info("All Server is OK")
    else:
        msg = "服务器Ping值异常,请检查详细日志内容!"
        logger.warning(msg)
#        ct.send_sms_control("ping", msg)
        sysstr = platform.system()
        if sysstr == "Windows":
            ct.readTexts("Ping Monitor is Worning")
コード例 #5
0
def exchange_file_monitor_task():
    
        linuxInfo = ct.get_server_config('./config/exchange_file_config.txt')
        
        check_flag = 0
        for info in linuxInfo: 
            hostip = info[0]
            try:
                file_checker = rfc.remote_file_check(info)
                error_file_list = file_checker.check_exchange_file()
                if len(error_file_list) == 0:
                    msg = "ok:所有系统交易所基础文件检查成功"
                    logger.info(msg)
                    check_flag += 1
                    ct.send_sms_control('NoLimit', msg)
                else:
                    list_str = ';'.join(error_file_list)
                    msg = "Error:有系统交易所基础文件检查失败,失败的文件:%s" % list_str
                    logger.error(msg)
                    ct.send_sms_control('NoLimit', msg)
                    
            except Exception:
                msg = "Error:系统交易所基础文件检查失败,出现异常,请查看服务器日志信息!"
                logger.error(msg, exc_info=True)
                ct.send_sms_control('NoLimit', msg)
コード例 #6
0
def port_process_task():

    linuxInfo = ct.get_server_config('./config/server_status_config.txt')
    try:
        ms = MonitorServer(linuxInfo)
        ms.socket_ps_monitor()
        check_result_list = ms.SocPs_Check_flag_list
        if len(check_result_list) == 0:
            check_result = False
        else:
            check_result = (sum(check_result_list) == len(check_result_list))
#        print "check_result: ", check_result
    except Exception as e:
        check_result = False
        msg = str(e)
        logger.warning(msg)

    logger.info(
        "************************The Monitor Result: ************************")
    if check_result:
        logger.info("All Server is OK")
    else:
        msg = "端口和进程监控报警,请查看服务器详细信息!"
        logger.error(msg)
        sysstr = platform.system()
        if sysstr == "Windows":
            ct.readTexts("Port Process Monitor is Worning")
    ct.generate_file(check_result, 'Port_PS_Monitor')
コード例 #7
0
def mem_monitor_task():

    linuxInfo = ct.get_server_config('./config/server_status_config.txt')
    try:
        ms = MonitorServer(linuxInfo)
        ms.mem_monitor()
        check_result_list = ms.mem_Check_flag_list
        if len(check_result_list) == 0:
            check_result = False
        else:
            check_result = (sum(check_result_list) == len(check_result_list))
#        print "check_result: ", check_result
    except Exception as e:
        check_result = False
        msg = str(e)
        logger.error(msg)

    logger.info(
        "************************The Monitor Result: ************************")
    if check_result:
        logger.info("All Server is OK")
    else:
        msg = "内存监控报警,请查看服务器详细信息"
        logger.error(msg)
        sysstr = platform.system()
        if sysstr == "Windows":
            ct.readTexts("Memory Monitor is Worning")
    ct.generate_file(check_result, 'Memory_Monitor')
コード例 #8
0
def main(argv):
    
    #默认是check_sjdr的监控检查
    try:
        yaml_path = './config/check_sjdr_logger.yaml'
        ct.setup_logging(yaml_path)
        linuxInfo = ct.get_server_config('./config/check_sjdr_config.txt')
        
        check_flag = 0
        for info in linuxInfo: 
            hostip = info[0]
            rfc = remote_file_check(info)
            error_list = rfc.check_sdjr()
            if len(error_list) == 0:
                msg = "ok:系统 %s 盘后当天的节点委托回传数据检查成功" % hostip
                logger.info(msg)
                check_flag += 1
            else:
                msg = "系统 %s 盘后当天的节点委托回传数据检查失败 失败的文件列表:%s " % (hostip, ';'.join(error_list))
                logger.error(msg)
                ct.send_sms_control('NoLimit', msg)
                
        if check_flag == len(linuxInfo):
            logger.info(u"OK:检查盘后当天的节点委托回传数据成功!")
        else:
            logger.error(u"Error:检查盘后当天的节点委托回传数据失败!")
    except Exception:
        logger.error("盘后当天的节点委托回传数据出现异常,请参看错误日志!", exc_info=True)
    finally:
        for handler in logger.handlers:
            logger.removeHandler(handler)        
コード例 #9
0
def fpga_task():

    linuxInfo = ct.get_server_config('./config/fpga_config.txt')
    #    linuxInfo = [['192.168.238.7', 22, 'trade', 'trade', 'tradeserver',/home/trade/FPGA']]
    try:
        ms = MonitorServer(linuxInfo)
        ms.fpga_monitor_run()
        check_result_list = ms.fpga_Check_flag_list
        logger.debug("check_result_list:")
        logger.debug(check_result_list)
        if len(check_result_list) == 0:
            check_result = False
        else:
            check_result = (sum(check_result_list) == len(check_result_list))
    except Exception:
        check_result = False
        logger.error('Faild to check fpga!', exc_info=True)

    logger.info(
        "************************The FPGA File Monitor Result: ************************"
    )
    if check_result:
        logger.info("OK,FPGA Server is OK")
        ct.send_sms_control("fpga", "OK:盘前FPGA文件检查正常")
    else:
        msg = "error:FPGA文件检查异常,请查看详细日志"
        logger.error(msg)
        #        send_sms_control("fpga", "error:奇点服务器FPGA文件检查异常,请查看详细日志")
        sysstr = platform.system()
        if sysstr == "Windows":
            ct.readTexts("VIP Server is Worning")
コード例 #10
0
def errorLog_monitor_task():

    linuxInfo = ct.get_server_config('./config/server_logDir_config.txt')
    grep_lists = mel.get_errorLog(linuxInfo)
    fileNlist = mel.get_result_file_list()
    check_flag = mel.errorLog_check(fileNlist, grep_lists)

    sysstr = platform.system()
    if (not check_flag):
        logger.error("错误日志检查报警,请查看服务器详细信息")
        #        send_sms_control("errorLog", "error:Server log error warning")
        if (sysstr == "Windows"):
            ct.readTexts("Server log warning")
コード例 #11
0
def xwdm_monitor_task():

        linuxInfo = ct.get_server_config('./config/check_xwdm_config.txt')
        
        for info in linuxInfo: 
            try:
                check_flag = 0
                hostip = info[0]
                c_x = cx.check_csv_file(info)
                error_list = c_x.check_xwdm()
                check_flag = (sum(error_list)==len(error_list))
                if check_flag:
                    logger.info(u"ok:系统 %s 席位代码文件检查成功!" % hostip)
                else:
                    logger.error(u"系统 %s 检查席位代码文件失败!" % hostip)
            except Exception:
                logger.error("查询席位代码失败,出现异常,请查看服务器日志信息!", exc_info=True)
                ct.send_sms_control('xwdm', "Error:查询席位代码失败,出现异常,请查看服务器日志信息!")
コード例 #12
0
def ssh_remote_command_task():
    
    error_list = []
    linuxInfo = ct.get_server_config('./config/ssh_remote_command_config.txt')
    for info in linuxInfo:
        hostip = info[0]
        port = int(info[1])
        username = info[2]
        password = info[3]
        command = info[5]

        sshClient = ct.sshConnect(hostip, port, username, password)
        if sshClient == 999:
            msg = "Failed:服务器[%s],连接失败,请检查密码是否正确" % hostip
            logger.error(msg)
            #ct.send_sms_control("NoLimit", msg)
            error_list.append(msg)
        else:
            logger.info("Ok: 服务器[%s]连接正常" % hostip)
            logger.info(hostip + "::" + command)
            #sshRes = ct.sshExecCmd(sshClient, command)
            stdin, stdout, stderr = sshClient.exec_command(command)
            stdoutstr = stdout.read().decode('utf-8')
            ssherr = stderr.read().decode('utf-8')
            if ssherr:
                msg = "服务器[%s]ssh执行命令返回错误:[%s]" % (hostip, ssherr)
                logger.warning(msg)
                error_list.append(msg)
            sshRes = []
            sshRes = stdoutstr.strip().split('\n')
            if sshRes == ['']:
                sshRes = []
            logger.info("sshRes:")
            logger.info(sshRes)
        
            sshClient.close()
                
    if len(error_list) != 0:
        temstr = ';'.join(error_list)
        msg = "Failed:服务器ssh执行命令失败列表:[%s]" % temstr
        logger.error(msg)
        ct.send_sms_control("NoLimit", msg)
    else:
        logger.info("所有服务器ssh执行命令正常!")
コード例 #13
0
def newserver_employ_task():
    
    error_list = []
    linuxInfo = ct.get_server_config('./config/newserver_employ_config.txt')
    for info in linuxInfo:
        hostip = info[0]
        port = int(info[1])
        username = info[2]
        password = info[3]
        #command = info[5]
        command = "/tmp/employ_server_package/employment_script.sh"

        #上传部署服务器./employ_server_package到新服务器的tmp目录
        ft.upload("./employ_server_package", "/tmp/employ_server_package", hostip, port, username, password, '')
        #执行shell脚本部署环境
        sshClient = ct.sshConnect(hostip, port, username, password)
        if sshClient == 999:
            msg = "Failed:服务器[%s],连接失败,请检查密码是否正确" % hostip
            logger.error(msg)
            #ct.send_sms_control("NoLimit", msg)
            error_list.append(msg)
        else:
            logger.info("Ok: 服务器[%s]连接正常" % hostip)
            #执行shell脚本部署环境
            logger.info(hostip + "::" + command)
            # sshRes = ct.sshExecCmd(sshClient, command)
            stdin, stdout, stderr = sshClient.exec_command(command)
            stdoutstr = stdout.read().decode('utf-8')
            ssherr = stderr.read().decode('utf-8')
            if ssherr:
                msg = "服务器[%s]ssh执行命令返回错误:[%s]" % (hostip, ssherr)
                logger.debug(msg)
                #error_list.append(msg)
            sshRes = []
            sshRes = stdoutstr.strip().split('\n')
            if sshRes == ['']:
                sshRes = []
            logger.info("sshRes:")
            logger.info(sshRes)
        
        sshClient.close()
コード例 #14
0
def main(argv):

    yaml_path = './config/non_trade_monitor_logger.yaml'
    ct.setup_logging(yaml_path)
    linuxInfo = ct.get_server_config('./config/offer_connect_config.txt')

    check_result = []
    for info in linuxInfo:
        try:
            check_flag = 0
            hostip = info[0]
            tgw_names = info[5]
            scc = ssh_command_check(info)
            error_list = scc.offer_connect_check()
            check_flag = (sum(error_list) == len(error_list))
            if check_flag:
                logger.info(u"ok:系统 %s 交易前置 %s 连接检查成功!" % (hostip, tgw_names))
                check_result.append(1)
            else:
                logger.error(u"系统 %s 交易前置 %s 连接检查失败:" % (hostip, tgw_names))
                check_result.append(0)

        except Exception:
            logger.error('Faild to check offer_connect.', exc_info=True)
            check_result.append(0)
        # finally:
        #     for handler in logger.handlers:
        #         logger.removeHandler(handler)
    final_check_flag = (sum(check_result) == len(check_result))
    logger.info(check_result)
    if final_check_flag:
        msg = "所有报盘前置连接地址检查成功"
        ct.send_sms_control("NoLimit", msg)
        logger.info(msg)
    else:
        logger.error("报盘连接前置检查有错误!")

    for handler in logger.handlers:
        logger.removeHandler(handler)
コード例 #15
0
def check_ssh_connect_task():
    
    error_list = []
    linuxInfo = ct.get_server_config('./config/check_root_passwd_config.txt')
    for info in linuxInfo:
        hostip = info[0]
        port = int(info[1])
        username = info[2]
        password = info[3]
        os_flag = info[4]
        if os_flag == 'l':
            sshClient = ct.sshConnect(hostip, port, username, password)
            if sshClient == 999:
                msg = "Failed:服务器[%s],连接失败,请检查密码是否正确" % hostip
                logger.error(msg)
                #ct.send_sms_control("NoLimit", msg)
                error_list.append(hostip + ":::" + username + ":::" + password)
            else:
                logger.info("Ok: 服务器[%s]连接正常" % hostip)
            
            sshClient.close()
        else:
            os_info = ct.get_remote_windows_os_info(username, password, hostip)
            if os_info == 'Null':
                msg = "Failed:服务器[%s],连接失败,请检查密码是否正确" % hostip
                logger.error(msg)
                #ct.send_sms_control("NoLimit", msg)
                error_list.append(hostip + ":::" + username + ":::" + password)
            else:
                logger.info("Ok: 服务器[%s]连接正常,操作系统是[%s]" % (hostip,os_info))            
        
    if len(error_list) != 0:
        temstr = ';'.join(error_list)
        msg = "Failed:服务器连接失败列表:[%s],请检查密码是否正确" % temstr
        logger.error(msg)
        ct.send_sms_control("NoLimit", msg)
    else:
        logger.info("所有服务器连接正常!")
コード例 #16
0
ファイル: check_xwdm.py プロジェクト: alexzhang1/auto_monitor
def main(argv):
  
    try:
        yaml_path = './config/check_xwdm_logger.yaml'
        ct.setup_logging(yaml_path)
        linuxInfo = ct.get_server_config('./config/check_xwdm_config.txt')
        
        
        for info in linuxInfo: 
            check_flag = 0
            hostip = info[0]
            c_x = check_csv_file(info)
            error_list = c_x.check_xwdm()
            check_flag = (sum(error_list)==len(error_list))
            if check_flag:
                logger.info(u"ok:系统 %s 席位代码文件检查成功!" % hostip)
            else:
                logger.error(u"系统 %s 检查席位代码文件失败:" % hostip)
    except Exception:
        logger.error('Faild to check xwdm!', exc_info=True)
    finally:
        for handler in logger.handlers:
            logger.removeHandler(handler)        
コード例 #17
0
def main(argv):

    try:
        yaml_path = './config/backup_file_check_logger.yaml'
        ct.setup_logging(yaml_path)
        linuxInfo = ct.get_server_config(
            './config/backup_file_check_config.txt')

        for info in linuxInfo:

            bfc = backup_file_check(info)
            origin_check_flag = bfc.check_origin_file()
            back_check = False
            if origin_check_flag:
                back_check = bfc.check_backupserver_lastday_file()
            if back_check:
                bfc.del_before_2days_file()

    except Exception:
        logger.error('Faild to check backup file!', exc_info=True)
    finally:
        for handler in logger.handlers:
            logger.removeHandler(handler)
コード例 #18
0
def errorLog_monitor_task():

    linuxInfo = ct.get_server_config('./config/server_logDir_config.txt')
    ntimes = dt.datetime.now().strftime("%Y%m%d%H%M%S")
    ndates = dt.datetime.now().strftime("%Y%m%d")
    #cur_dir_i = os.getcwd()
    cur_dir = os.getcwd().replace("\\", "/") + "/"
    log_dir = cur_dir + "mylog/"
    grep_result_file = log_dir + "errorLog_result_" + ndates + '.txt'
    back_file = log_dir + "errorLog_result_" + ntimes + '.txt'
    #备份上一次的grep_result_file文件到back_file
    if (os.path.exists(grep_result_file)):
        os.rename(grep_result_file, back_file)

    grep_lists = mel.get_errorLog(linuxInfo)
    fileNlist = mel.get_result_file_list()
    check_flag = mel.errorLog_check(fileNlist, grep_lists)

    sysstr = platform.system()
    if (not check_flag):
        logger.error("错误日志检查报警,请查看服务器详细信息")
        #        send_sms_control("errorLog", "error:Server log error warning")
        if (sysstr == "Windows"):
            ct.readTexts("Server log warning")
コード例 #19
0
def fpgatask():

    linuxInfo = ct.get_server_config('./config/fpga_config.txt')
    #    linuxInfo = [['192.168.238.7', 22, 'trade', 'trade', 'tradeserver',/home/trade/FPGA']]

    try:
        ms = MonitorServer(linuxInfo)
        ms.fpga_monitor_run()
        check_result_list = ms.fpga_Check_flag_list
        logger.debug("check_result_list:")
        logger.debug(check_result_list)
        if len(check_result_list) == 0:
            check_result = False
        else:
            check_result = (sum(check_result_list) == len(check_result_list))
    except Exception as e:
        check_result = False
        logger.error('Faild to check fpga!', exc_info=True)

    logger.info(
        "************************The FPGA File Monitor Result: ************************"
    )
    if check_result:
        logger.info("FPGA Server is OK")
    else:
        msg = "error:FPGA is Exception, Please Check it!"
        logger.error(msg)
        #        ct.fortunesms(msg)
        sysstr = platform.system()
        if sysstr == "Windows":
            ct.readTexts("VIP Server is Worning")


#        else:
#            ct.send_mail(msg,"Failed_FPGA_Monitor")
    ct.generate_file(check_result, 'FPAG_File_Monitor')
コード例 #20
0
@Desc    :   None
'''

# here put the import lib
import common_tools as ct
import time
import datetime as dt
import os
import logging
import subprocess
#import platform
#import sys
#reload(sys)
#sys.setdefaultencoding('utf-8')

linuxInfo = ct.get_server_config('./config/ssh_keygen_config_test.csv')


def copy_ssh_rsa(linuxInfo):

    logger = logging.getLogger()
    yaml_path = './config/non_trade_monitor_logger.yaml'
    ct.setup_logging(yaml_path)
    error_list = []
    for info in linuxInfo:
        hostip = info[3]
        username = '******'
        password = '******'
        #        servername = info[4]
        command = './copy_ssh_rsa.sh %s %s %s' % (hostip, username, password)
コード例 #21
0
@author: zhangwei
@comment: 通过ssh连接Linux服务器,egrep指令搜索错误日志信息,并写入文件,并报警,报警后,ctrl+c退出程序,再次启动的话将不会报警。
"""

import paramiko
import common_tools as ct
import time
import datetime as dt
import os
import re
import platform
import sys
import getopt
import logging

linuxInfo = ct.get_server_config('./config/server_logDir_config.txt')
#print "linuxInfo:", linuxInfo
ntimes = dt.datetime.now().strftime("%Y%m%d%H%M%S")
ndates = dt.datetime.now().strftime("%Y%m%d")
#cur_dir_i = os.getcwd()
cur_dir = os.getcwd().replace("\\", "/") + "/"
log_dir = cur_dir + "mylog/"
grep_result_file = log_dir + "errorLog_result_" + ndates + '.txt'
back_file = log_dir + "errorLog_result_" + ntimes + '.txt'
#log_file = log_dir + "montitor_errorLog_run_" + ndates + '.log'
logger = logging.getLogger()


#将监控到的信息写入grep_result_file文件。
def get_errorLog(linuxInfo):
コード例 #22
0
def tcp_connect_monitor_task():

    linuxInfo = ct.get_server_config('./config/tcp_connect_config.txt')
    ntm.common_monitor_task("single_common_monitor", "tcp_connect_info",
                            linuxInfo)
コード例 #23
0
def main(argv):

    try:
        yaml_path = './config/file_transfer_logger.yaml'
        ct.setup_logging(yaml_path)
        linuxInfo = ct.get_server_config('./config/file_transfer_config.txt')

        #读取输入参数
        ftmethod = ''
        windir = ''
        lindir = ''
        singlefile = ''
        try:
            opts, args = getopt.getopt(
                argv, "hm:w:l:f:",
                ["method=", "windir=", "lindir=", "filename="])
        except getopt.GetoptError:
            print(
                'file_transfer.py -m <method> -w <windir> -l <lindir> -f <filename>'
            )
            sys.exit(2)
        for opt, arg in opts:
            if opt == '-h':
                print(
                    'file_transfer.py -m <method> -w <windir> -l <lindir> -f <filename>\n \
                    method=upload, means upload file from windows to linux.\n \
                    method=download, means download file from linux to windows. \n \
                    windir=dir, Window dir, The format like this: "D:\\my_project\\python". \n \
                    lindir=dir, Linux dir, The format like this: "/home/trade/temp". \n \
                    filename=filename, options- The single file to upload or download.'
                )
                sys.exit()
            elif opt in ("-m", "--method"):
                ftmethod = arg
            elif opt in ("-w", "--windir"):
                windir = arg
            elif opt in ("-l", "--lindir"):
                lindir = arg
            elif opt in ("-f", "--filename"):
                singlefile = arg

        #多线程处理
        thrlist = range(len(linuxInfo))
        threads = []
        #        singlefile = 'monitor_log_2019-05-30.txt'
        #        ftmethod = 'download'
        if ftmethod == 'upload':
            #                thrlist = range(len(linuxInfo))
            #                threads=[]
            for (i, info) in zip(thrlist, linuxInfo):
                hostip = info[0]
                port = int(info[1])
                username = info[2]
                password = info[3]
                servername = info[4]
                local_upload = info[5]
                local_download = info[6]
                remote_dir = info[7]

                #                    hostip = '192.168.238.7'
                #                    username = '******'
                #                    password = '******'
                #                    port = 22
                #                    local_upload = 'D:/my_project/python/auto_monitor/upload'
                #                    download_dir = 'D:/my_project/python/auto_monitor/download'
                #                    remote_dir = '/home/trade/temp'

                if windir != '':
                    local_upload = windir
                if lindir != '':
                    remote_dir = lindir
                t = MyThread(upload, (
                    local_upload,
                    remote_dir,
                    hostip,
                    port,
                    username,
                    password,
                    singlefile,
                ), upload.__name__ + str(i))
                threads.append(t)
        elif ftmethod == 'download':
            #                thrlist = range(len(linuxInfo))
            #                threads=[]
            for (i, info) in zip(thrlist, linuxInfo):
                hostip = info[0]
                port = int(info[1])
                username = info[2]
                password = info[3]
                servername = info[4]
                local_upload = info[5]
                local_download = info[6]
                remote_dir = info[7]

                if windir != '':
                    local_download = windir
                if lindir != '':
                    remote_dir = lindir
                t = MyThread(download, (
                    local_download,
                    remote_dir,
                    hostip,
                    port,
                    username,
                    password,
                    singlefile,
                ), download.__name__ + str(i))
                threads.append(t)
        else:
            logger.error("method input is invalid! -m upload or -m download?")
            return


#        print "thrcouat3:", threading.active_count()
        for i in thrlist:
            threads[i].start()
        for i in thrlist:
            threads[i].join()

    except Exception:
        logger.error('Faild to transfer file!', exc_info=True)
    finally:
        for handler in logger.handlers:
            logger.removeHandler(handler)
コード例 #24
0
@author: zhangwei
@comment: 通过ssh连接Linux服务器,实现一些自定义的指令查询,并将结果保存到文件。
"""

import common_tools as ct
import time
import datetime as dt
import os
import logging
#import platform
#import sys
#reload(sys)
#sys.setdefaultencoding('utf-8')

linuxInfo = ct.get_server_config('./config/normal_query_config.txt')
ntimes = dt.datetime.now().strftime("%Y%m%d%H%M%S")
ndates = dt.datetime.now().strftime("%Y%m%d")
cur_dir = os.getcwd().replace("\\", "/") + "/"
if os.path.exists("./normal_query"):
    pass
else:
    os.mkdir('./normal_query')
log_dir = cur_dir + "normal_query/"
query_result_file = log_dir + "normal_query_result_" + ntimes + '.txt'
log_file = log_dir + "normal_query_run_log_" + ndates + '.txt'


def get_query_data(linuxInfo):

    logger = logging.getLogger()
コード例 #25
0
    szdbf_date_dir = 'D-COM/File/' + todays[:4] + '-' + m + '-' + d
    return szdbf_date_dir

#红利征税数据表文件名
dbf_dir = '/home/trade/monitor_server/SSCC/'
#dbf_dir = './DBdata/InvestorExchFee/dbf_file/'
todays = dt.datetime.now().strftime("%Y%m%d")
sh_date_str = shdbf_date_str(todays)
szdbf_date_dir = szdbf_date_dir(todays)
#print("sh_date_str:",sh_date_str)
abcsj_dbf = dbf_dir + 'PROP/' + todays + '/abcsjjs588.' + sh_date_str
zsmx_dbf = dbf_dir + szdbf_date_dir +'/ZSMX' + str(todays)[-4:] + '.DBF'
csv_file_name = './DBdata/InvestorExchFee/InvestorExchFee_' + ndates + '_dbdata.csv'
null_investorID = []

info = ct.get_server_config('./config/mysql_config_sf.txt')
mysql_db_ip = info[0][0]
mysql_user = info[0][1]
mysql_passwd = info[0][2]
mysql_dbname = info[0][3]
#mysql_dbname = 'singular_field'
table_name = 't_CustShareholderInfo'
mysql_port = int(info[0][4])
mysqldb_info = [mysql_db_ip, mysql_user, mysql_passwd,mysql_dbname, mysql_port]
#print("mysqldb_info:",mysqldb_info)
#mysql_obj = myc.mysql_tools(mysqldb_info)


#数据库查询匹配inverstorID,匹配不到的话用'999999'替代
def get_investorID(shareholderID,mysql_obj):
    query_sql = "SELECT investorID FROM " + mysql_dbname + "." + table_name + " WHERE shareholderID = " + "'" + shareholderID + "';"
コード例 #26
0
def process_boardOrder(info):

    try:
        mssql_db_ip = info["mssql_db_ip"]
        mssql_user = info["mssql_user"]
        mssql_passwd = info["mssql_passwd"]
        mssql_dl_db = info["mssql_dl_db"]
        mssql_up_db = info["mssql_up_db"]
        mssql_dbname = info["mssql_dbname"]
        # mysql_db_ip = info["mysql_db_ip"]
        # mysql_user = info["mysql_user"]
        # mysql_passwd = info["mysql_passwd"]
        # mysql_dbname = info["mysql_dbname"]
        # mysql_port = info["mysql_port"]

        csv_file_name = './DBdata/BoardOrder/' + ndates + '_BoardOrder_df.csv'
        #先连接upload库查询修改成功的订单
        upDB_info = [mssql_db_ip, mssql_user, mssql_passwd, mssql_up_db]
        downDB_info = [mssql_db_ip, mssql_user, mssql_passwd, mssql_dl_db]
        #(cursor, conn) = mst.connect_mssql(uploaddb_info)
        EQ_sql = "SELECT Content FROM wanping_upload.dbo.t_EQCommand WHERE MdbErrCode = 0"
        content_res, title = mst.get_db_data(EQ_sql, upDB_info)
        logger.info(content_res)
        print("title:", title)
        if content_res != []:
            result_df = pd.DataFrame(columns=['TradingDay','OrderLocalID','OrderSysID','Direction','Price',\
                    'VolumeTotalOriginal','VolumeTraded','SecurityID','ExchangeID','InvestorID','SInfo',\
                    'InvestorName','SecurityName','ShortSecurityName','ExchangeName','DBname'])
            for item in content_res:
                logger.info(item[0])
                cont_list = item[0].split('|')
                print(cont_list)
                #SSEOrder
                if int(cont_list[0]) == 1:
                    ExchangeName = "上海证券交易所"
                    order_sql = "SELECT a.TradingDay,a.OrderLocalID,a.OrderSysID,a.Direction,a.Price,\
                            a.VolumeTotalOriginal,a.VolumeTraded,a.SecurityID,a.ExchangeID,\
                            a.InvestorID,a.SInfo,b.InvestorName,c.SecurityName,c.ShortSecurityName FROM %s.dbo.t_SSEOrder as a \
                            LEFT JOIN %s.dbo.t_Investor as b ON a.InvestorID = b.InvestorID\
                            LEFT JOIN %s.dbo.t_SSESecurity as c ON a.SecurityID = c.SecurityID\
                            WHERE a.OrderSysID = '%s' " % (
                        mssql_dl_db, mssql_dl_db, mssql_dl_db, cont_list[1])
                    #是否为打板
                    #SELECT * FROM t1 LEFT JOIN t2 on t1.cid=t2.id AND t1.name=‘su’
                    #sql3 = "SELECT BoardFlag FROM wanping_download.dbo.t_SSEMarketData WHERE SecurityID = " + order_df[0][2]
                #SZSEOrder
                elif int(cont_list[0]) == 2:
                    print("深圳订单")
                    ExchangeName = "深圳证券交易所"
                    order_sql = "SELECT a.TradingDay,a.OrderLocalID,a.OrderSysID,a.Direction,a.Price,\
                        a.VolumeTotalOriginal,a.VolumeTraded,a.SecurityID,a.ExchangeID,\
                        a.InvestorID,a.SInfo,b.InvestorName,c.SecurityName,c.ShortSecurityName FROM %s.dbo.t_SZSEOrder as a \
                        LEFT JOIN %s.dbo.t_Investor as b ON a.InvestorID = b.InvestorID\
                        LEFT JOIN %s.dbo.t_SZSESecurity as c ON a.SecurityID = c.SecurityID\
                        WHERE a.OrderSysID = '%s' " % (
                        mssql_dl_db, mssql_dl_db, mssql_dl_db, cont_list[1])
                logger.info(order_sql)
                res_df = mst.get_db_df(order_sql, downDB_info)
                res_df['ExchangeName'] = ExchangeName
                res_df['DBname'] = mssql_dbname
                result_df = pd.concat([result_df, res_df], ignore_index=True)

            #result_df.to_csv(csv_file_name, encoding='utf-8',index=False)
            result_df.to_csv(csv_file_name, encoding='utf-8')

        else:
            logger.info("t_EQCommand没有MdbErrCode等于0的数据!")
        #导入到mysql数据库
        if not os.path.isfile(csv_file_name):
            logger.error("当天没有BoardOrder订单文件生成")
        else:
            logger.info("导入mysql....")
            info = ct.get_server_config('./config/mysql_config.txt')
            mysql_db_ip = info[0][0]
            mysql_user = info[0][1]
            mysql_passwd = info[0][2]
            mysql_dbname = info[0][3]
            mysql_port = int(info[0][4])
            mysqldb_info = [
                mysql_db_ip, mysql_user, mysql_passwd, mysql_dbname, mysql_port
            ]
            mysql_obj = myc.mysql_tools(mysqldb_info)
            local_infile_value = mysql_obj.get_local_infile_value()
            #判断mysql参数是否打开允许导入文件
            if local_infile_value == 'ON':
                file_sql = mysql_obj.load_table_commend_gen(
                    csv_file_name, 'fireball_board_order')
                logger.info(file_sql)
                mysql_obj.execute_sql(file_sql)
                logger.info("导入mysql完成")
            else:
                local_file_msg = "Error,mysql导入csv失败,local_infile 的值为: %s" % local_infile_value
                ct.send_sms_control('NoLimit', local_file_msg, '13681919346')
    except Exception:
        msg = '处理boardOrder数据出现异常'
        logger.error(msg, exc_info=True)
        ct.send_sms_control('NoLimit', msg, '13681919346')
    finally:
        pass
コード例 #27
0
def main(argv):
  
    try:
        yaml_path = './config/file_transfer_logger.yaml'
        ct.setup_logging(yaml_path)
        linuxInfo = ct.get_server_config('./config/file_transfer_config.txt')
        
        #读取输入参数
        ftmethod = ''
        windir = ''
        lindir = ''
        singlefile = ''
        try:
            opts, args = getopt.getopt(argv,"hm:l:r:f:",["method=", "local_dir=", "remote_dir=" ,"filename="])
        except getopt.GetoptError:
            print('file_transfer.py -m <method> -l <local_dir> -r <remote_dir> -f <filename>')
            sys.exit(2)
        for opt, arg in opts:
            if opt == '-h':
                print('file_transfer.py -m <method> -w <windir> -l <lindir> -f <filename>\n \
                    method=upload, means upload file from windows to linux.\n \
                    method=download, means download file from linux to windows. \n \
                    windir=dir, Window dir, The format like this: "D:\\my_project\\python". \n \
                    lindir=dir, Linux dir, The format like this: "/home/trade/temp". \n \
                    filename=filename, options- The single file to upload or download.'  )       
                sys.exit()
            elif opt in ("-m", "--method"):
                ftmethod = arg
            elif opt in ("-l", "--local_dir"):
                windir = arg
            elif opt in ("-r", "--remote_dir"):
                lindir = arg
            elif opt in ("-f", "--filename"):
                singlefile = arg

        
#            hostip = '192.168.238.7'
#            username = '******'
#            password = '******'
#            port = 22
#            local_upload = 'D:/my_project/python/auto_monitor/upload'
#            download_dir = 'D:/my_project/python/auto_monitor/download'
#            remote_dir = '/home/trade/temp'
            
          
#        singlefile = 'monitor_log_2019-05-30.txt'
#        ftmethod = 'download'
        if ftmethod == 'upload':
            for info in linuxInfo:               
                hostip = info[0]
                port = int(info[1])
                username = info[2]
                password = info[3]
                local_upload = info[5]
                local_download = info[6]
                remote_dir = info[7]
                
                if windir !='':
                    local_upload = windir
                if lindir !='':
                    remote_dir = lindir
                upload(local_upload, remote_dir, hostip, port, username, password, singlefile)
        elif ftmethod == 'download':
            for info in linuxInfo:               
                hostip = info[0]
                port = int(info[1])
                username = info[2]
                password = info[3]
                local_upload = info[5]
                local_download = info[6]
                remote_dir = info[7]
                
                if windir !='':
                    local_download = windir
                if lindir !='':
                    remote_dir = lindir
                download(local_download, remote_dir, hostip, port, username, password, singlefile)
        else:
            logger.error("method input is invalid! -m upload or -m download?")
        
    except Exception:
        logger.error('Faild to transfer file!', exc_info=True)
    finally:
        for handler in logger.handlers:
            logger.removeHandler(handler)
コード例 #28
0
def core_file_monitor_task():

    linuxInfo = ct.get_server_config('./config/server_status_config.txt')
    common_monitor_task("single_common_monitor", "core_file_info", linuxInfo)