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. O043、计算节点宕机了怎么办

    参考https://www.cnblogs.com/CloudMan6/p/5562131.html   Rebuild 可以恢复损坏的instance .那如果是宿主机坏了怎么办呢?比如硬件故障或者 ...

  2. 阿里P8架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结

    更多内容:https://www.toutiao.com/i6599796228886626829/?tt_from=weixin&utm_campaign=client_share& ...

  3. ADO.net 数据库连接new SqlConnection、Open、Close、Dispose

    今天踩了一个坑,用了一个static对象,存储了Connection,导致了并发量大时(35/s)出现单个连接的数据库请求堆积,以及并发Open导致的异常,最终使服务下线. 排查中发现有些概念不清的地 ...

  4. selectpage

    官方文档地址 https://terryz.oschina.io/selectpage/docs.html

  5. jvm监控工具jconsole进行远程监控配置

    [环境] SUSE linux11 + jdk1.6 + tomcat7 [场景] 最近在做性能测试,想通过我本地(win7)上的jdk来远程监控上述服务器的jvm相关信息. [配置] 配置上述服务器 ...

  6. raise与raise······from

    在python中,如果想手动引发一个异常,我们一般都会使用raise # -*- coding:utf-8 -*- # @Author: WanMingZhu # @Date: 2019/10/22 ...

  7. IO[File_API学习]

    IO流[File_API学习的使用] File_API学习的使用1.名称分隔符 /  \ separatorjava下路径:\ 在Windows下的路径,在java里 \ 是转义字符.需要 \\Str ...

  8. deep_learning_Dropout

    吴恩达深度学习笔记(十一)—— dropout正则化 主要内容: 一.dropout正则化的思想 二.dropout算法流程 三.dropout的优缺点 一.dropout正则化的思想 在神经网络中, ...

  9. python+Appium自动化:运行第一个appium脚本

    用pycharm工具进行编写,运行一个开启淘宝app实例 from appium import webdriver desired_caps = { "platformName": ...

  10. 远程文件传输工具sftp、scp、rsync

    一.scp 格式 scp [options] [user@]host : /sourcefile /destpathscp [options] /sourcefile [user@]host:/des ...