Python測試遠程端口連接時間
最近自己服務器訪問別人的服務器,有時候會報超時錯誤,有時候又能夠正常訪問別人服務器。
思路
最開始猜測是網(wǎng)絡不穩(wěn)定造成的,但是自己沒有收集什么時候超時,什么時候能正常訪問別人服務器的日志,搞網(wǎng)絡運維的同學根本不鳥我(其實,這活本來就是運維的事,有點小心塞,不過想起蜘蛛俠的名言)。
能力越大,責任就越大
寫個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這個死循環(huán)里面需要避免cpu飆到100%問題,則需要在最后一行添加time.sleep(0.2)
接下來一個一個談這些點:
Python3獲取當前時間
fromdatetimeimportdatetime
starTime=datetime.now()
endTime=datetime.now()
這樣獲取出來的時間,我們一般需要在進行格式化處理才能夠展現(xiàn)給用戶看。
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文件創(chuàng)建
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()
這里是先判斷文件是否存在,如果不存在,就創(chuàng)建一個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})
死循環(huán)避免CPU飚高
循環(huán)里面最后添加一行:
importtime
time.sleep(0.2)
讓線程休眠一段時間,這樣就避免死循環(huán)占用cpu太高。
使用腳本
python3windows_telnet.py192.168.10.2180
以后就可以通過這個腳本監(jiān)測遠程端口連接問題,并每天生成一個日志文件。
以上內容為大家介紹了python中的反斜杠,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.mobiletrain.org/

猜你喜歡LIKE
相關推薦HOT
更多>>
pythonfor循環(huán)是什么
pythonfor循環(huán)是什么在做遍歷的時候,對于一些數(shù)據(jù)的反復循環(huán)執(zhí)行,我們會用到for循環(huán)的語句。可以說這是新手入門必學的語句之一,在很多基礎循...詳情>>
2023-11-13 07:46:36
pythoncontextmanager()的轉換
python中contextmanager()的轉換1、說明當發(fā)出請求時,requests庫會在將請求實際發(fā)送到目標服務器之前準備該請求。請求準備包括像驗證頭信息和...詳情>>
2023-11-13 06:34:35
python使用items()遍歷鍵值對
python使用items()遍歷鍵值對字典可以用來存儲各種方式的信息,所以有很多方式可以通過字典的所有鍵值對、鍵或值。說明1、即使通過字典,鍵值對...詳情>>
2023-11-13 04:24:15
python實例方法中self的作用
python實例方法中self的作用說明1、無論是創(chuàng)建類的構造方法還是實例方法,最少要包含一個參數(shù)self。2、通過實例的self參數(shù)與對象進行綁定,程序...詳情>>
2023-11-13 03:46:48熱門推薦
python實現(xiàn)WSGI的框架
沸pythonfor循環(huán)是什么
熱python-=是什么意思
熱python打開文本文件有哪些方法?
新pythoncontextmanager()的轉換
pythonre是什么?
pythondecimal是什么
python列表追加元素出錯的解決
python使用loguru操作日志
python使用items()遍歷鍵值對
pythonvim中有哪些對象
python實例方法中self的作用
pythonin和is的區(qū)分
pythonos.path.join()函數(shù)的使用
技術干貨







快速通道 更多>>
-
課程介紹
點擊獲取大綱 -
就業(yè)前景
查看就業(yè)薪資 -
學習費用
了解課程價格 -
優(yōu)惠活動
領取優(yōu)惠券 -
學習資源
領3000G教程 -
師資團隊
了解師資團隊 -
實戰(zhàn)項目
獲取項目源碼 -
開班地區(qū)
查看來校路線