Python实现telnet命令测试防火墙
Python实现telnet命令测试防火墙
telnet
主要用于测试主机端口是否开通ping
主要是用来测试网络是否畅通和主机是否正在使用
使用Python实现Telnet测试主机端口是否开通的功能。使用telnet命令是会出现以下集中情况:
通过Python的socket模块来实现,根据上述三种情况进行不同的处理
Telnet协议是基于tcp协议实现的
主机和端口都是通的
这种情况,就会正常连接,正常发送和返回,socket没有任何异常,不用管是否需要密码这一情况,这种情况只需要socket连接主机ip和port,就肯定能链接目标主机ip和端口。
只需要连接自后断开就ok
主机通端口不通
这种情况,连接过程中,socket会抛出ConnectionRefusedError
异常,这种情况只需要socket连接主机ip和port,然后捕获对应的异常进行处理即可。
只需要针对连接过程中会抛出ConnectionRefusedError
异常进行处理
主机不通
这种情况,socket会一直尝试连接,针对这种情况设置一个超时时间,会抛出socket.timeout
的异常,捕获该异常进行处理即可
只需要针对连接过程中会抛出socket.timeout
异常进行处理
代码逻辑如下:
#!/usr/bin/python3 # -*-encoding: utf8 -*- import socket Buffer_ = 1024 def write_ip_port(file_name, host, ports): """ 文件操作,生成对应的记录文件 :param file_name: 生成的文件名 :param host: 主机IP :param ports: 主机端口 :return: """ with open('./%s' % file_name, mode='a+', encoding='utf8') as file_handler: file_handler.write("%s\t%s\n" % (host, ports)) def connection_host(host, port): """ 测试防火墙是否开通 :param host: 主机ip :param port: 主机端口 :return: """ cli = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM) cli.settimeout(1) try: """ 处理正常连接 """ cli.connect((host, int(port))) cli.close() file = 'successful.txt' write_ip_port(file, host, port) except ConnectionRefusedError as cre: """ 处理端口关闭 """ # print(cre) file = 'ConnectionRefusedError.txt' write_ip_port(file, host, port) except socket.timeout as scto: """ 处理主机不通 """ # print(scto) file = "failed.txt" write_ip_port(file, host, port) def read_ip_list(file_name): """ 读取ipList.txt文件中的ip和端口,添加到ip_list列表中 """ ip_list = [] with open('./%s' % file_name, mode='r', encoding='utf8') as file_handle: for line in file_handle.readlines(): line = line.replace("\n", '').strip() if line is '': continue line = line.split(' ') ip_list.append(line) return ip_list def main(file): """ 主程序入口 :param file: ip和端口的文件名,及其为路径,默认是当前路径 :return: """ ip_list = read_ip_list(file) for ip_port in ip_list: connection_host(ip_port[0], ip_port[1]) if __name__ == '__main__': main("ipList.txt")
作者: 咕咚!
出处: https://www.cnblogs.com/linga/
关于作者:专注虚拟化,运维开发,RPA,Rust,Go,Python!
本文版权归作者和博客园共有,禁止*.csdn.net转载,禁止以盈利为目的的转载,转载文章,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(oldsixa@163.com)咨询.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)