Esempio n. 1
0
 def dell_tel_login1(self):
     try:
         logger.debug(self.ip + " Connecting...")
         tel = pexpect.spawn('telnet %s' % self.ip)
         i = tel.expect(
             ['ogin:', 'refused', 'fail', 'time', pexpect.TIMEOUT],
             timeout=5)
         if i >= 1:
             logger.error(self.ip + " Can not reach the remote router!")
             tel.close()
             return None
         tel.sendline(self.pass1)
         i = tel.expect('word:', timeout=2)
         tel.sendline(self.pass2)
         i = tel.expect([self.wait2, 'ogin:', pexpect.TIMEOUT], timeout=5)
         if i >= 1:
             logger.error(self.ip + " Error username or password!")
             tel.close()
             return None
         #
     except Exception as e:
         logger.error(self.ip + ' ' + str(e))
         tel.close()
         return None
     else:
         logger.info(self.ip + " Logged in!")
         return tel
Esempio n. 2
0
 def linux_ssh_login1(self):
     try:
         logger.debug(self.ip + " Connecting...")
         ssh = pexpect.spawn('ssh -p 22 %s@%s' % (self.pass1, self.ip))
         i = ssh.expect([
             'word:', 'continue connecting (yes/no)?', 'refused', 'fail',
             'time', pexpect.TIMEOUT
         ],
                        timeout=8)
         if i == 1:
             ssh.sendline('yes')
             ssh.expect('word:', timeout=3)
         if i >= 2:
             logger.error(self.ip + " Can not reach the remote router!")
             ssh.close()
             return None
         ssh.sendline(self.pass2)
         i = ssh.expect(['[#$]', 'word:', pexpect.TIMEOUT], timeout=3)
         if i >= 1:
             logger.error(self.ip + " Error username or password!")
             ssh.close()
             return None
     except Exception as e:
         logger.error(self.ip + ' ' + str(e))
         ssh.close()
         return None
     else:
         logger.info(self.ip + " Logged in!")
         return ssh
Esempio n. 3
0
   def save_to_disk(self):
      timestr = time.strftime('%Y%m%d%H%M%S',time.localtime())
      logger.debug(self.ip + ' start to save config to disk')

      fname = self.name + '-' + timestr
      city = hashlib.md5((self.city).encode('UTF-8')).hexdigest()
      fpath = base_dir + r'/down/conf/%s/%s' % (city, self.name)
      if not os.path.exists(fpath):
         try:
            os.makedirs(fpath)
         except Exception as e:
            logger.error(str(e))
            return

      os.chdir(fpath)

      #save config
      try:
         file = open(fname, 'w')
         file.writelines(self.txt_conf)
      except Exception as e:
         logger.error(str(e))
      else:
         logger.info(self.ip + ' finish saving config!')
      finally:
         file.close()
Esempio n. 4
0
 def h3c_tel_login2(self):
     try:
         logger.debug(self.ip + " Connecting...")
         tel = pexpect.spawn('telnet %s' % self.ip)
         i = tel.expect(
             ['word:', 'refused', 'fail', 'time', pexpect.TIMEOUT],
             timeout=15)
         if i == 1:
             logger.error(self.ip + " Can not reach the remote router!")
             tel.close()
             return None
         tel.sendline(self.pass1)
         i = tel.expect([self.wait1, 'word:', pexpect.TIMEOUT], timeout=5)
         if i >= 1:
             logger.error(self.ip + " Invald password!")
             tel.close()
             return None
         tel.sendline('sup')
         tel.expect('ssword:', timeout=1)
         tel.sendline(self.pass2)
         i = tel.expect([self.wait1, 'ssword:', pexpect.TIMEOUT], timeout=3)
         if i >= 1:
             logger.error(self.ip + " Error super password!")
             tel.close()
             return None
     except Exception as e:
         logger.error(self.ip + ' ' + str(e))
         tel.close()
         return None
     else:
         logger.info(self.ip + " Logged in!")
         return tel
Esempio n. 5
0
    def pull_from_cmm(self):
        ip = envi['cmm_sftp_ip']
        port = envi['cmm_sftp_port']
        usr = envi['cmm_sftp_user']
        pwd = envi['cmm_sftp_pass']
        src = envi['data_src_name']
        p = envi['cmm_data_pattern']
        try:
            target = paramiko.Transport((ip, port))
            target.connect(username=usr, password=pwd)
            sftp = paramiko.SFTPClient.from_transport(target)
            logger.debug("connect to cmm's sftp server")
            # to find files for transfaring
            for rdir in envi['cmm_data_dir']:
                for f in sftp.listdir(rdir):
                    if f not in self.loc_files and re.match(p, f) != None:
                        self.trans_files.append(f)
                        # transfar via sftp get
                        sftp.get(rdir + f, self.ldir + f)
                        logger.debug('file: <' + str(f) + '> transfared')

            if self.trans_files == []:
                logger.warn('no data to pull')
                send_mail(src + u'未更新', u'请咨询数据提供技术人员')
            else:
                logger.info('pulling finished: ' + str(self.trans_files))
        except Exception as e:
            logger.error(str(e))
            send_mail(src + u'自动同步失败', str(e))
            return False
        target.close()
        return True
Esempio n. 6
0
 def linux_ssh_login2(self):
     try:
         logger.debug(self.ip + " Connecting...")
         ssh = pexpect.spawn('ssh %s@%s' % (self.pass1, self.ip))
         i = ssh.expect(['$', pexpect.TIMEOUT], timeout=8)
         if i >= 1:
             logger.error(self.ip + " Error login using ssh key!")
             ssh.close()
             return None
     except Exception as e:
         logger.error(self.ip + ' ' + str(e))
         ssh.close()
         return None
     else:
         logger.info(self.ip + " Logged in!")
         return ssh
Esempio n. 7
0
def ftp_alert(msg, phone):
    #新建临时文件
    fpath = r'/var/www/html/netmon/log'
    os.chdir(fpath)

    timestr = time.strftime('%H%M%S', time.localtime())
    fname = '220000000_000000000000_' + timestr + '_NETMON.txt'
    text = ''
    #print type(msg)
    #将中文编码转换成ftp服务器上的编码
    msg = msg.encode('gbk')
    for num in phone:
        text = text + '|' + num + '||' + msg + "|0|\n"

    #print type(text)
    try:
        file = open(fname, 'w')
        file.writelines(text)
        file.close()
    except Exception as e:
        logger.error(str(e))
        file.close()
        return False
    else:
        logger.debug('temp file [' + fname + '] created')

    #临时文件上传ftp服务器
    try:
        ftp = FTP()
        ftp.set_debuglevel(1)
        ftp.connect(ftp_server, ftp_port)
        ftp.login(ftp_usr, ftp_pwd)
        logger.debug(" Ftp Server Logged in!")
        ftp.cwd(ftp_dir)
        ftp.storlines('STOR ' + fname, open(fname, 'r'))
        ftp.set_debuglevel(0)
        ftp.close()
    except Exception as e:
        logger.error(str(e))
        ftp.close()
        return False
    else:
        logger.info(" file uploaded to FTP server!")

    #清理临时文件
    os.remove(fname)
    return True
Esempio n. 8
0
def get_weibo(mid):
    url = "http://10.75.57.27/getdata/querydata2.php?condition=%s&mode=weibo&format=json" % (
        mid.strip())
    #try:
    if 1:
        start_time = clock()
        text = requests.get(url, timeout=4).text
        logger.info(str(text))
        logger.debug(url)
        end_time = clock()
        testLogger()
        #lock.acquire()
        #print text
        #with open('request.log', 'a+') as logs:
        #    logs.write('request %s cost: %s\n' % (url, end_time - start_time))
        #print url
        #lock.release()
        return text
Esempio n. 9
0
 def h3c_ssh_login1(self):
     try:
         logger.debug(self.ip + " Connecting...")
         ssh = pexpect.spawn('ssh -p 22 %s@%s' % (self.pass1, self.ip))
         #openssh-6.6.1p1-25 登陆h3c的bug,必须用下行的ssh连接方法
         #ssh=pexpect.spawn('ssh -1 %s@%s' %(self.pass1, self.ip))
         i = ssh.expect([
             'word:', 'continue connecting (yes/no)?', 'fail', 'refused',
             'time', pexpect.TIMEOUT
         ],
                        timeout=8)
         if i == 1:
             ssh.sendline('yes')
             ssh.expect('word:', timeout=3)
         if i >= 2:
             logger.error(self.ip + " Can not reach the remote router!")
             ssh.close()
             return None
         ssh.sendline(self.pass2)
         i = ssh.expect([self.wait1, 'word:', pexpect.TIMEOUT], timeout=5)
         if i >= 1:
             logger.error(self.ip + " Error username or password!")
             ssh.close()
             return None
         ssh.sendline('sup')
         ssh.expect('ssword:', timeout=1)
         ssh.sendline(self.pass3)
         i = ssh.expect([self.wait1, 'ssword:', pexpect.TIMEOUT], timeout=3)
         if i >= 1:
             logger.error(self.ip + " Error super password!")
             ssh.close()
             return None
     except Exception as e:
         logger.error(self.ip + ' ' + str(e))
         ssh.close()
         return None
     else:
         logger.info(self.ip + " Logged in!")
         return ssh
Esempio n. 10
0
   def save(self):
      if device_netcap.get(self.corp) == None:
         logger.error(self.ip + ' Error : unsupported device!')
         return

      obj = self.login()
      if obj == None:
         logger.error(self.ip + ' Error : saving config failed due to login error!')
         return

      prompt = self.name + device_netcap.get(self.corp).get('prompt')
      pageCmd = device_netcap.get(self.corp).get('page')
      saveCmd = device_netcap.get(self.corp).get('conf')[0]

      try:
         obj.sendline(pageCmd)
         obj.expect([prompt, pexpect.TIMEOUT], timeout=3)

         #capture running-configration
         logger.debug(self.ip + ' executing: ' + saveCmd)
         obj.sendline(saveCmd)
         i = obj.expect([prompt, pexpect.TIMEOUT], timeout=20)
         if i == 1:
            logger.error(self.ip + ' error exec ' + saveCmd)
            obj.close()
            return
         self.txt_conf = obj.before
         
         logger.debug(self.ip + ' logged out!')
         obj.close()
      except Exception as e:
         logger.error(self.ip + ' ' + str(e))
         obj.close()
         return
      else:
         self.save_to_disk()
Esempio n. 11
0
def testLogger():
    logger.debug('this is mod.testLogger...')
    submod.tst()
Esempio n. 12
0
    def mon(self):
        if self.target == ():
            logger.warn(self.ip + ' No target to monitor!')
            return

        if device_netmon.get(self.corp) == None:
            logger.error(self.ip + ' Error : unsupported device to monitor!')
            return

        obj = self.login()
        if obj == None:
            logger.error(self.ip +
                         ' Error : monitor failed due to login error!')
            return

        success = device_netmon.get(self.corp).get('succ')
        fail = device_netmon.get(self.corp).get('fail')
        pingCmd = device_netmon.get(self.corp).get('ping')

        list_tdes = []
        list_rtts = []
        try:
            for line in self.target:
                cmd = pingCmd % line[0]
                logger.debug(self.ip + ' ' + cmd)
                obj.sendline(cmd)
                rtt = 0
                i = obj.expect([success, fail, pexpect.TIMEOUT], timeout=10)
                if i == 2:
                    logger.error(self.ip + " Command runs abnormal!")
                    obj.close()
                    return
                if i == 1:
                    if line[2] > 0:
                        msg = self.name + line[1] + u':线路中断'
                        my_alert(msg, line[1])
                if i == 0:
                    rtt = int(obj.after.split(' ')[2]) + 1
                    if line[2] == 0:
                        msg = self.name + line[1] + u':线路恢复' + str(rtt) + 'ms'
                        my_alert(msg, line[1])
                    elif line[2] > RTT_MAX:
                        if rtt < RTT_MAX:
                            msg = self.name + line[1] + u': 线路延时恢复' + str(
                                rtt) + 'ms'
                            my_alert(msg, line[1])
                    else:
                        if rtt > RTT_MAX:
                            msg = self.name + line[1] + u': 线路延时过高' + str(
                                rtt) + 'ms'
                            my_alert(msg, line[1])

                list_tdes.append(line[1])
                list_rtts.append(rtt)
            obj.close()
            #批量更新线路延迟数据rtt,减少数据库访问
            mupdate(list_tdes, list_rtts)
        except Exception as e:
            logger.error(self.ip + ' ' + str(e))
            obj.close()
            return
        else:
            logger.info(self.ip + " monitoring finished!")
            return
Esempio n. 13
0
    def capture(self):
        if device_netcap.get(self.corp) == None:
            logger.error(self.ip + ' Error : unsupported device to capture!')
            return
        obj = self.login()
        if obj == None:
            logger.error(self.ip +
                         ' Error : capture failure due to login error!')
            return

        prompt = self.name + device_netcap.get(self.corp).get('prompt')
        pageCmd = device_netcap.get(self.corp).get('page')
        cmdSet = {
            'conf': device_netcap.get(self.corp).get('conf'),
            'routesum': device_netcap.get(self.corp).get('routesum'),
            'route': device_netcap.get(self.corp).get('route'),
            'mod': device_netcap.get(self.corp).get('mod'),
            'int': device_netcap.get(self.corp).get('int'),
            'stp': device_netcap.get(self.corp).get('stp')
        }
        try:
            obj.sendline(pageCmd)
            obj.expect([prompt, pexpect.TIMEOUT], timeout=3)

            #exec CMDs on the target device
            for (cmd_key, cmd_value) in cmdSet.items():
                for cmd_str in cmd_value:
                    logger.debug(self.ip + ' executing ' + cmd_str)
                    obj.sendline(cmd_str)
                    i = obj.expect([prompt, pexpect.TIMEOUT], timeout=20)
                    if i == 1:
                        logger.error(self.ip + ' error exec ' + cmd_str)
                        obj.close()
                        return
                    temp = self.__getattribute__('re_%s' % cmd_key)
                    temp += obj.before
                    self.__setattr__('re_%s' % cmd_key, temp)

            logger.debug(self.ip + ' logged out!')
            obj.close()
        except Exception as e:
            logger.error(self.ip + ' ' + str(e))
            obj.close()
            return
        else:
            #save things to disk
            logger.debug(self.ip + ' start to save info to disk')
            city = hashlib.md5((self.city).encode('UTF-8')).hexdigest()
            fpath = base_dir + r'/down/cap/%s/%s' % (city, self.name)
            if not os.path.exists(fpath):
                try:
                    os.makedirs(fpath)
                except Exception as e:
                    logger.error(str(e))
                    return
            os.chdir(fpath)

            for cmd_key in cmdSet.keys():
                try:
                    file = open(cmd_key, 'w')
                    file.writelines(self.__getattribute__('re_%s' % cmd_key))
                finally:
                    file.close()

            #trim routing table
            cmd = 'bash %s/script/trim_%s.sh' % (base_dir, self.corp)
            val = os.system(cmd)
            if (val != 0):
                logger.error(self.ip + ' Error exec trim_route script')
Esempio n. 14
0
def start():
    logger.debug('Program begin: auto sync files via sftp')
    logger.debug('step 0: start a vpn tunnel')
    vpn_log = envi['cwd'] + 'log/vpn.log'
    vpn_conf = envi['cwd'] + 'conf/client.ovpn'
    cmd = 'openvpn --config %s > %s 2>&1 &' % (vpn_conf, vpn_log)
    try:
        os.system(cmd)
        time.sleep(30)
        sync = sftp_sync()
        if sync is not None:
            logger.debug('step 1: pull data from cmm')
            if sync.pull_from_cmm():
                logger.debug('step 2: push data to prd')
                sync.push_to_prd()
    finally:
        logger.debug('step 3: stop the vpn tunnel')
        cmd = "kill `ps -ef|grep openvpn|grep -v 'grep'|awk '{print $2}'`"
        os.system(cmd)
        time.sleep(10)
        logger.debug('Program end')
Esempio n. 15
0
                        "predict_file": "data/{task_name}/predict".format(task_name=task_name),
                        "predict_result": "data/{task_name}/predict_result".format(task_name=task_name),
                        "tf_serving_save_dir": "result/{task_name}/saved_model/{model_version}".format(task_name=task_name,model_version = time.strftime('%Y%m%d')),
                        "parameter_information": "result/{task_name}/saved_model/parameter_information.json".format(task_name=task_name),
                        "save_dir": "result/{task_name}/saved_model/".format(task_name=task_name),
                        "tag_to_id": "result/{task_name}/saved_model/tag_to_id.json".format(task_name=task_name),
                        "id_to_tag": "result/{task_name}/saved_model/id_to_tag.json".format(task_name=task_name)
                        }

        bert_config = helper.obj_load(base_config["bert_config"])
        base_config = helper.merge_two_dicts(base_config, para)
        config = {
            "base_config": base_config,
            "bert_config": bert_config
                }
        helper.obj_save(config, base_config["parameter_information"])
        if os.path.exists(os.path.join(base_config["save_dir"], "vocab.txt")):
            logger.debug(["model_result vocab_file existed!!"])
        else:
            shutil.copy(base_config["vocab_dir"], base_config["save_dir"])
        logger.info(base_config)
    else:
        base_config = helper.obj_load("result/{task_name}/saved_model/parameter_information.json".format(task_name=task_name))["base_config"]

    model = Model(base_config)

    if ARGS.entry == "train":
        model.train()
    elif ARGS.entry == "predict":
        model.predict()