【Python】Python 2 测试网络连通性脚本

文章目录

    • 前言
    • 1. 命令行传参
    • 2. 代码

前言

最近在只有python2的服务器上部署服务,不能用三方类库,这里出于好奇心学习下python。这里简单做个脚本,实现了检验网络连通性的功能(类似于curl)。
在这里插入图片描述

1. 命令行传参

使用命令行的目的是可以一次性检验多个url的连通性,比如上线前对接多个三方接口可以用上。

python test_socket.py -u "{'https://www.baidu.com':'120.232.145.144','ws://localhost:8080/ws':'127.0.0.1','wss://hello/ws':''}" 

参数解释

{'https://www.baidu.com':'120.232.145.144', // 期待域名解析为120.232.145.144 否则报错'ws://localhost:8080/ws':'127.0.0.1',  // 期待域名解析为127.0.0.1 否则报错'wss://hello/ws':''  // 无期望域名解析的ip,保证连通性即可
}

2. 代码

# -*- coding: utf-8 -*-# coding:utf-8
import sys
import getopt
import socket
import urlparse
import redef get_hostname(input_url):if len(input_url) == 0:return 'url为空'hostname = urlparse.urlparse(input_url).hostnameif hostname is None:return '域名解析为空'try:return socket.gethostbyname(hostname)except socket.error:return '域名解析异常'def get_port(input_url):if len(input_url) == 0:return 'url为空'# url 上读端口号input_port = urlparse.urlparse(input_url).portif input_port:return input_port# url 上读不到端口号用协议类型区分scheme = urlparse.urlparse(input_url).schemeif scheme == 'https' or scheme == 'wss':return 443if scheme == 'http' or 'ws':return 80def check_connect(input_ip, input_port):# 设置超时时间为3秒钟socket.setdefaulttimeout(3)s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)try:s.connect((input_ip, input_port))return '可联通'except socket.timeout:return '无法联通, 超时'except Exception as e:return '无法联通, 异常:' + str(e)finally:s.close()# 从命令行中读取参数
opts, argv = getopt.getopt(sys.argv[1:], 'u:')
ops = dict(opts)
url_ip_dict = eval(ops.get('-u'))# 循环参数内容进行连通性检测
print "-"*150
printTemplate = "%-60s %-20s %-20s %-50s"
print printTemplate % ('url', 'ip', 'port', 'result')
print "-"*150
for input_url, input_ip in url_ip_dict.iteritems():# 域名解析actual_ip = get_hostname(input_url)# 未能解析出ip为异常if not re.match(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', input_ip):print printTemplate % (input_url, '\\', '\\', actual_ip)continue# 解析出ip, 且入参存在ip 则校验是否是解析出来的ipif input_ip:if actual_ip != input_ip:print printTemplate % (input_url, input_ip, '\\', '未能联通, 实际解析的ip为' + actual_ip)continueport = get_port(input_url)# 连通性测试result = check_connect(actual_ip, port)print printTemplate % (input_url, actual_ip, port, result)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/26854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成功塑造领军人物形象,对企业带来哪些好处?

在企业的完整形象中,产品、品牌、高管是最重要的组成部分。小马识途建议中小企业在成长过程中及早对高管形象进行包装,成功塑造企业的领军人物,不单单是企业高管个人的形象提升,对企业经营发展带来诸多益处。小马识途营销顾问简单…

跨行业数据资产整合与应用:探讨如何打破数据孤岛,实现跨行业数据资产的共享与协同应用

目录 一、引言 二、跨行业数据资产整合的必要性 1、数据价值的最大化 2、促进产业创新 3、提升政府治理能力 三、跨行业数据资产整合的挑战 1、技术挑战 2、制度挑战 3、利益挑战 四、打破数据孤岛的策略与方法 1、建立统一的数据标准与规范 2、构建跨行业数据共享…

“全光无线星空”照亮津亚电子智能制造之路

随着第四次工业革命浪潮的到来,智能制造正成为制造业的新常态。工业4.0时代的工厂不再是封闭的制造孤岛,而是通过高度的数字化和网络化,实现生产过程的智能化、自动化和灵活化。在这样的大趋势下,制造业正经历着从传统制造向智能制造的深刻转型,数字化车间和智能化生产线成为推…

Ubuntu 22.04安装 docker

安装过程和指令 # 1.升级 apt sudo apt update # 2.安装docker sudo apt install docker.io docker-compose # 3.将当前用户加入 docker组 sudo usermod -aG docker ${USER} # 4. 重启 # 5. 查看镜像 docker ps -a 或者 docker images # 6. 下载镜像 docker pull hello-world …

海康充电桩报文校验TCP校验和

1 TCP校验文档校验文档要求: 校验码描述 校验码计算范围包含包头标识、消息头和消息体,校验算法采用 TCP 和校验,具体规则如下。 将待校验的所有数据分为 16 位的字(大端序),如果总长度为奇数个字节,则在最后增添一个 位都为 0 的字节; 将所有 16 位的字进行累加,累加…

【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常

【问题分类】驱动使用 【关键字】ODBC、驱动使用、PHP 【问题描述】 PHP使用PDO_ODBC连接yashan数据库,使用绑定参数获取数据时,客户现场出现报错 本地复现未出现异常报错,但是无法正确获取数据。 【问题原因分析】开启ODBC报错日志后&am…

线代老师大PK,这四位胜出!

说实话,线代真的别乱跟老师 因为每个老师讲课适用的人群不一样,比如都说李永乐老师线代讲的好,但是我去听完发现,李永乐老师的线代讲的虽然好,但是对于零基础或者基础不好的考生来说,真的有点不友好&#…

dataguard备库延时加大,同步报错(ORA-01119、ORA-17502、ORA-15173),该如何解决?

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG数据库运维(如安装迁移,性能优化、故障应急处理等) 公众号:老苏畅谈运维 欢迎关注本人公众号,更多精彩与您分享。一大早…

MYSQL 三、mysql基础知识 7(MySQL8其它新特性)

一、mysql8新特性概述 MySQL从5.7版本直接跳跃发布了8.0版本 ,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上 做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是多MySQL Optimizer优化器进行了改进。不仅在速度…

【运维自动化-配置平台】如何使用云资源同步功能(腾讯云为例)

云资源同步是通过apikey去单向同步云上的主机资源和云区域信息,目前支持腾讯云和亚马逊云。主要特性 1、蓝鲸配置平台周期性的单向只读同步云主机和vpc(对应蓝鲸云区域)信息,第一次全量,后面增量 2、默认同步到主机池…

短剧系统源码短剧平台开发短剧小程序APP短剧模版Java源码

一.管理端设置及操作 1.系统配置 系统的配置项都在该列表中,使用前请配置好参数 2.签到积分设置 签到可以获取设置积分,连续签到按照设置的积分规则走,积分可以兑换余额,兑换比例按照配置104,余额可以消费 3.用户中心 所有的用户注册后都会在该列表展示,可以查看用户详情,也…

正点原子imx6ull 进度条颜色、logo位置上偏或色偏等问题

正点原子imx6ull 进度条改颜色 logo位置上偏或显示色偏等问题 开机进度条logo问题进度条界面全屏logo位置上偏进度条界面logo其他问题进度条界面去掉中间这条杠 uboot界面logo问题不显示uboot界面的打印信息uboot显示logo不理想uboot不显示logo 开机进度条logo问题 进度条界面…

拿来做课设哈哈哈-“久坐提醒器”的网页应用

这篇文章将介绍一个名为“久坐提醒器”的网页应用,它通过HTML、CSS和JavaScript三种技术实现。下面是对这三种技术在实现该应用中的作用和代码的详细解析。 HTML:构建网页结构 HTML(HyperText Markup Language)是网页的基础结构…

2. ceph存储组件

ceph存储组件 一、ceph存储介绍1、ceph介绍2、ceph提供的存储接口 二、ceph的核心组件三、crush算法 一、ceph存储介绍 分布式存储/文件系统,数据按特定的算法分散存储到不同的设备上 存在数据副本机制,保证数据的可靠性 典型的开源软件: ce…

LabVIEW RT在非NI硬件上的应用与分析

LabVIEW RT(实时操作系统)可运行在非NI(National Instruments)硬件上,如研华工控机,但需要满足特定硬件要求。本文从硬件要求、开发和运行差异、可靠性、稳定性、优势和成本等多角度详细分析在非NI硬件上运…

神经网络字符分类

按照题目要求修改了多层感知机 题目将图片的每个点作为输入,其中大小为28*28,中间有两个大小为100的隐藏层,激活函数是relu,然后输出大小是10,激活函数是softmax 优化器是Adam,结合了AdaGrad和RMSProp算法…

机器学习python实践——关于ward聚类分层算法的一些个人心得

最近在利用python跟着参考书进行机器学习相关实践,相关案例用到了ward算法,但是我理论部分用的是周志华老师的《西瓜书》,书上没有写关于ward的相关介绍,所以自己网上查了一堆资料,都很难说清楚ward算法,幸…

AIGC绘画设计:Midjourney V6 来袭,该版本有哪些新功能?

Midjourney V6 支持更自然的语言输入,可以处理更自然地对话式(以前的版本是以关键字为中心的)提示,对复杂提示有了更好的解释能力。大幅增加了每个 /image 的内存,可以处理更长、更详细的提示(从40 直接提升…

Android framework的Zygote源码分析

文章目录 Android framework的Zygote源码分析linux的fork Android framework的Zygote源码分析 init.rc 在Android系统中,zygote是一个native进程,是Android系统上所有应用进程的父进程,我们系统上app的进程都是由这个zygote分裂出来的。zyg…

12、云服务器上搭建环境

云服务器上搭建环境 12.1 选择一款远程连接工具(mobax) 有很多,比如mobax、xshll等等,我这里选择mobax,下载个免费版的即可 安装完成后,双击打开: 第一步,创建远程连接的用户,用户默认为root,密码为远程服务器的密码 第二步,输入远程公网IP,选择刚刚创建的用…