Python实现telnet命令测试防火墙

  • telnet主要用于测试主机端口是否开通
  • ping主要是用来测试网络是否畅通和主机是否正在使用

使用Python实现Telnet测试主机端口是否开通的功能。使用telnet命令是会出现以下集中情况:

  1. 主机和端口都是通的
  2. 主机通端口不通
  3. 主机不通

通过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")

Python实现telnet命令测试防火墙的更多相关文章

  1. 基于Python的AT命令测试脚本

    对于各种有线&无线调制解调器(modem)产品来说,AT命令是事实上的标准接口之一,在工业界被广泛使用. 我开发了一套基于Python的AT命令测试脚本,源代码可在github上获取: htt ...

  2. telnet命令测试端口连接是否正常, telnet不是内部或外部命令的方案

    telnet ip地址 端口 1.点击开始 → 运行 → 输入CMD,回车.2.在DOS界面里,输入telnet测试端口命令:   telnet IP 端口  或  telnet 域名 端口,回车. ...

  3. 测试端口是否开放用PIN还是telnet命令

    有时候很想知道一个IP的某个端口是否开放,那么你会用什么命令来测试呢?是ping还是telnet? 其实正确的方法应该是telnet命令.因为用ping命令的话不管你ping哪个端口,只要这个IP地址 ...

  4. win7系统不能用telnet命令的两种解决方法

    电脑专业人员对telnet命令都不陌生了,Telnet当成一种通信协议,在日常工作中,经常面对网络问题的人都会用到telnet命令,因为简单有效,可以帮助更快的找出问题.要是在使用过程中碰到win7纯 ...

  5. Java 实现 telnet命令 验证主机端口的连通性

    Java 实现 telnet命令 验证主机端口的连通性 1.Telnet 命令 Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式.它为用户提供了在本地计 ...

  6. CentOS7的防火墙以及selinux介绍/安装telnet命令/安装netstat与ifconfig命令

    简介:firewall防火墙的使用 防火墙:主要用户信息安全防护,主要有软件防火墙和硬件防火墙.firewalld防火墙是软件防火墙,在centos7 之前默认采用的防火墙是iptables,而在ce ...

  7. 如何使用批处理解决批量telnet命令的输入

    用telnet命令做不了自动,因为如果成功telnet了,telnet就控制输入了.其实,不用那么麻烦,您下载一个微软官方的扫描器叫portqry,用一句for读取您文件里的ip和port,执行就行了 ...

  8. telnet命令使用详解

    telnet命令用于登录远程主机,对远程主机进行管理.telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了.但仍然有很多别的系统可能采 ...

  9. linux 安装telnet命令及使用

    一.CentOS下查看系统是否已安装telnetrpm -qa | grep telnettelnet-0.17-48.el6.x86_64telnet-server-0.17-48.el6.x86_ ...

随机推荐

  1. 解决radiobutton在gridview中无法单选的一种方法

    最近在项目中有个单选gridview中某一项的需求,使用radiobutton后发现,虽然最终选择出来的是一项,但是在页面上却可以选择多项,经过查看生成的html代码,发现生成的radio的name属 ...

  2. [C#.net]连接Oracle的几种方式

    一:通过System.Data.OracleClient(需要安装Oracle客户端并配置tnsnames.ora)1. 添加命名空间System.Data.OracleClient引用2. usin ...

  3. C# 使用Emit实现动态AOP框架 进阶篇之异常处理

    目  录 C# 使用Emit实现动态AOP框架 (一) C# 使用Emit实现动态AOP框架 (二) C# 使用Emit实现动态AOP框架 (三) C# 使用Emit实现动态AOP框架 进阶篇之异常处 ...

  4. 手把手教你搭建FastDFS集群(中)

    手把手教你搭建FastDFS集群(中) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u0 ...

  5. 【原创】大叔问题定位分享(33)oozie提交任务报错ArithmeticException: / by zero

    oozie提交workflow后执行task报错: 2019-07-04 17:19:00,559 ERROR [RMCommunicator Allocator] org.apache.hadoop ...

  6. 关于mysql installer 的安装和环境变量配置

    MySQL针对不同的用户提供了2中不同的版本: MySQL Community Server:社区版.由MySQL开源社区开发者和爱好者提供技术支持,对开发者开放源代码并提供免费下载. MySQL E ...

  7. 支付宝小程序室内地图导航开发-支付宝小程序JS加载esmap地图

    如果是微信小程序开发,请参考微信小程序室内地图导航开发-微信小程序JS加载esmap地图文章 一.在支付宝小程序里显示室内三维地图 需要满足的两个条件 调用ESMap室内地图需要用到小程序web-vi ...

  8. 关于MVC与MVP的理解

    1. MVC的理解误区 理解误区: 1. 认为Model是指失血模型的实体类(Entity),是作为View和Controller之间的传输数据. 2. 把业务逻辑全部放在Controller端,认为 ...

  9. Asp.Net Server.MapPath()用法

    做了一个上传文件的功能 本地测试没问题 部署到服务器之后 一直报错 由于 某些历史原因 看不到错误信息 最后发现是路径的问题 其实这么简单的问题 最早该想到的 ...... Server.MapPat ...

  10. JavaMaven【七、插件使用】

    配置pom.xml 配置在那个周期的那个阶段执行该插件的功能 上图是配置了使用插件source3.0.1,该插件的功能是打包源码 并配置了在package阶段后执行打包源码的操作jar-no-fork ...