一起学Python-通过python脚本进行批量telnet连通性测试

执行效果如下:

非会员通道:一起学Python-通过python脚本进行批量telnet连通性测试(关注可看)
在这里插入图片描述

文档内容如下:

在这里插入图片描述

代码如下:

使用方法:

python3 ${文件名} -t ${超时时间设定} -f ${测试素材文件} -n ${测试次数}
import argparse
import os
import logging
import telnetlib
run_log = 'run.txt'
if os.path.exists(run_log):
    os.remove(run_log)
logger = logging.getLogger()
logger.setLevel('DEBUG')
BASIC_FORMAT = "%(asctime)s :%(levelname)s :%(message)s"
DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
formatter = logging.Formatter(BASIC_FORMAT, DATE_FORMAT)
chlr = logging.StreamHandler() # 输出到控制台的handler
chlr.setFormatter(formatter)
chlr.setLevel('DEBUG')  # 也可以不设置,不设置就默认用logger的level
fhlr = logging.FileHandler(run_log) # 输出到文件的handler
fhlr.setFormatter(formatter)
logger.addHandler(chlr)
logger.addHandler(fhlr)

##telnet访问函数
def to_up(Host, port, timeout, frequency):
    info = ("第[%s]次访问地址[%s:%s]" %(frequency, Host, port))
    try:
        tn = telnetlib.Telnet(Host, port=port, timeout=timeout)
        tn.close()
        de = info + "成功\n"
        logger.debug(de)
    except:
        err = info + "失败\n"
        logger.error(err)
#测试功能类
class Test:
    def __init__(self, frequency, port, timeout, host):
        self.frequency = frequency
        self.host = host
        self.port = int(port)
        self.timeout = int(timeout)
    def telnet(self):
        end = self.frequency + 1
        for s in range(1, end):
            to_up(Host=self.host, port=self.port, timeout=self.timeout, frequency=s)
#获取文本内容
def get_info(url_file, frequency=1, timeout=None):
    if os.path.exists(url_file):
        # 打开文件
        file = open(url_file, "r", encoding='utf-8')
        # 遍历文件行内容
        for (num, line) in enumerate(file, 1):
            line = str.replace(line,'\n','')
            logger.info("正在检测第[%s]行内容:[%s]" % (num, line))
            xi2 = [line]
            for i in xi2:
                domain_port = i.split(' ')
                domain = domain_port[0]
                port = domain_port[1]
                logger.info("第[%s]行获取的域名:[%s]" % (num, domain))
                logger.info("第[%s]行获取的端口:[%s]\n" % (num, port))
                Program = Test(frequency=frequency, port=port, timeout=timeout, host=domain)
                Program.telnet()
        file.close()
    else:
        exit("找不到文件[%s]" %url_file)
def main():
    #all_info :接收所有传入的信息
    all_info = argparse.ArgumentParser(description="设置测试参数")
    data = {'-f': '--file', '-n': '--frequency', '-t': '--time'}
    for i in data:
        parameter = i
        parameters = data.get(i)
        all_info.add_argument(parameter, parameters, required=True)
    all = all_info.parse_args()
    ##下面开始拆分信息,all.xxx中,xxx为上面定义的--后面的字符串
    f = all.file
    s = all.frequency
    t = all.time
    logger.info("\n文件选择:[%s]\n访问次数:[%s]次\n超时时间:[%s]秒\n" %(f, s, t))
    get_info(url_file=f, frequency=int(s), timeout=int(t))
if __name__ == '__main__':
    main()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坐公交也用券

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值