python3批量telnet脚本


一、脚本简单介绍

工作中遇到了很多次需要测试大量IP和端口是否能连通的情景,本人并不想手动一个个去使用telnet命令,因此写了此脚本。运行时,需要将ip和端口以ipsports为文件名分别存放在txt文本中,并和此程序放在同一目录下即可。需要注意的是,应保证ip数量和端口数量一致,以免程序因超过索引范围导致报错。
执行的结果默认保存在同目录下的success.csvfailure.csv中。


二、源码

from telnetlib import Telnet
import csv

class main:
    def __init__(self):
        self.success=open('success.csv','a',encoding='utf-8',newline='')
        self.failure=open('failure.csv','a',encoding='utf-8',newline='')
        self.success_writer=csv.writer(self.success)
        self.failure_writer=csv.writer(self.failure)

    def telnet(self,ip, port):
        """
        测试单个ip和端口是否能连通
        """
        try:
            tn=Telnet(host=ip, port=port, timeout=2)
            print( f"{ip} {port} 端口开放")
            row=[ip,port,'端口开放']
            self.success_writer.writerow(row)
            tn.close()
        except:
            row=[ip,port,'端口未开放,无法连通']
            self.failure_writer.writerow(row)
            print(f"{ip} {port}  端口未开放,无法连通")

    def GetIpAndPort(self):
        """
        从文件中逐行读取ip和端口
        """
        #注意ip和端口末尾的换行符及可能有空行的情况产生
        with open('ips.txt','r',encoding='utf-8') as file:
            ips=file.readlines()
        
        with open('ports.txt','r',encoding='utf-8') as file:
            ports=file.readlines()
        return ips,ports
        
if __name__ == '__main__':
    main=main()
    ips,ports=main.GetIpAndPort()
    for i in range(len(ips)):
        ip=ips[i].strip()
        port=ports[i].strip()
        if ip=='' or port =='':
            continue
        else:
            main.telnet(ip,port)
    print('执行完毕!')
    main.success.close()
    main.failure.close()
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值