千锋教育-做有情怀、有良心、有品质的职业教育机构

Python测试远程端口连接时间

来源:千锋教育
发布时间:2023-11-06 02:42:16
分享

最近自己服务器访问别人的服务器,有时候会报超时错误,有时候又能够正常访问别人服务器。

思路

最开始猜测是网络不稳定造成的,但是自己没有收集什么时候超时,什么时候能正常访问别人服务器的日志,搞网络运维的同学根本不鸟我(其实,这活本来就是运维的事,有点小心塞,不过想起蜘蛛侠的名言)。

能力越大,责任就越大

写个python脚本,然后,在python脚本里面使用telnet去连接别人服务器对应的端口,然后,计算连接前后的时间长短。

解决

importos

importcsv

importtime

importargparse

importtelnetlib

fromdatetimeimportdatetime

#测试远程服务端口连接耗时

#python3windows_telnet.py192.168.10.2180

parser=argparse.ArgumentParser()

parser.add_argument("ip",type=str,help="ip")

parser.add_argument("port",type=str,help="port")

args=parser.parse_args()

timeFormat="%Y-%m-%d%H:%M:%S.%f"

starTimeTitle="开始连接时间"

endTimeTitle="结束连接时间"

differenceTimeTitle="连接总耗时"

whileTrue:

starTime=datetime.now()

starTimeView=starTime.strftime(timeFormat)

print("开始连接:{0}".format(starTimeView))

tn=telnetlib.Telnet(args.ip,args.port)

endTime=datetime.now()

endTimeView=endTime.strftime(timeFormat)

print("连接完成:{0}".format(endTimeView))

tn.close()

print("连接结束")

differenceTime=endTime-starTime

print("连接消耗:{0}".format(differenceTime))

nowTime=datetime.now()

csvFileName="{0}.csv".format(nowTime.strftime("%Y-%m-%d"))

ifos.path.exists(csvFileName)isnotTrue:

withopen(csvFileName,"w",newline="")ascsvfile:

fieldnames=[starTimeTitle,endTimeTitle,differenceTimeTitle]

writer=csv.DictWriter(csvfile,fieldnames=fieldnames)

writer.writeheader()

withopen(csvFileName,"a",newline="")ascsvfile:

fieldnames=[starTimeTitle,endTimeTitle,differenceTimeTitle]

writer=csv.DictWriter(csvfile,fieldnames=fieldnames)

writer.writerow({starTimeTitle:starTimeView,endTimeTitle:endTimeView,differenceTimeTitle:differenceTime})

time.sleep(0.2)

这里涉及到几个Python的知识点:

●获取当前时间,计算时间差以及时间格式化

●telnetlib的使用

●生成csv文件以及对文件读写

●在whileTrue这个死循环里面需要避免cpu飙到100%问题,则需要在最后一行添加time.sleep(0.2)

接下来一个一个谈这些点:

Python3获取当前时间

fromdatetimeimportdatetime

starTime=datetime.now()

endTime=datetime.now()

这样获取出来的时间,我们一般需要在进行格式化处理才能够展现给用户看。

Python3时间格式化

在上面的基础上,我们可以,这样做

timeFormat="%Y-%m-%d%H:%M:%S.%f"

starTimeView=starTime.strftime(timeFormat)

使用strftime方法处理,具体可以查看Python3文档的date.strftime(format)部分。

Python3计算时间差

differenceTime=endTime-starTime

对,就这样相减,就完事了。

telnetlib的使用

importtelnetlib

tn=telnetlib.Telnet("192.168.10.21","80")

csv文件创建

importos

importcsv

csvFileName="{0}.csv".format(nowTime.strftime("%Y-%m-%d"))

ifos.path.exists(csvFileName)isnotTrue:

withopen(csvFileName,"w",newline="")ascsvfile:

fieldnames=[starTimeTitle,endTimeTitle,differenceTimeTitle]

writer=csv.DictWriter(csvfile,fieldnames=fieldnames)

writer.writeheader()

这里是先判断文件是否存在,如果不存在,就创建一个csv文件,并且写好表头。

csv文件追加

withopen(csvFileName,"a",newline="")ascsvfile:

fieldnames=[starTimeTitle,endTimeTitle,differenceTimeTitle]

writer=csv.DictWriter(csvfile,fieldnames=fieldnames)

writer.writerow({starTimeTitle:starTimeView,endTimeTitle:endTimeView,differenceTimeTitle:differenceTime})

死循环避免CPU飚高

循环里面最后添加一行:

importtime

time.sleep(0.2)

让线程休眠一段时间,这样就避免死循环占用cpu太高。

使用脚本

python3windows_telnet.py192.168.10.2180

以后就可以通过这个脚本监测远程端口连接问题,并每天生成一个日志文件。

以上内容为大家介绍了python中的反斜杠,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。https://www.mobiletrain.org/

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • python之什么是函数式编程? 函数式编程(简称FP)是一种编程范式,其中最基本的元素是不可修改的值,以及不与其他函数共享状态的“纯函数”。纯函数对于给定的输入永远返回同样的输出,而且不会修改任何数据,也不会造成副作用。因此,纯函数
  • 使用Cython为Python编写更快的C扩展 使用Python很有趣,但有时,用它编写的程序可能很慢。所有的运行时动态调度会带来很大的代价:有时它比用C或Rust等系统语言编写的等效代码慢10倍。将代码迁移到一种全新的语言可能会在成本和可靠性方面
  • Python如何玩转加密? python中的一个有用的基本加密库就叫做cryptography。它既是一个“安全”方面的基础库,也是一个“危险”层。“危险”层需要更加小心和相关的知识,并且使用它很容易出现安全漏洞。在这篇介绍性文
  • Python编程中3个常用的数据结构和算法 python内置了许多非常有用的数据结构,比如列表(list)、集合(set)以及字典(dictionary)。就绝大部分情况而言,我们可以直接使用这些数据结构。但是,通常我们还需要考虑比如搜索、排序
  • 开发人员常用Python开发工具 Python编程开发是目前最热门的行业之一,Python无论是从人才需求和未来发展前景,都是一门值得学习和掌握的开发语言,对于Python开发者人员来说,需要了解一些常用的Python开发工具。1.P
  • Python 中如何实现参数化测试? 之前,我曾转过一个单元测试框架系列的文章,里面介绍了unittest、nose/nose2与pytest这三个最受人欢迎的Python测试框架。本文想针对测试中一种很常见的测试场景,即参数化测试,继续