最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python利用socket實(shí)現(xiàn)多進(jìn)程的端口掃描器

 更新時(shí)間:2022年12月06日 14:26:12   作者:Sir 老王  
作為開發(fā)人員經(jīng)常需要查看服務(wù)的端口開啟狀態(tài)判斷服務(wù)是否宕機(jī)。特別是部署的服務(wù)比較多的情況下,可能存在幾個(gè)甚至幾十個(gè)服務(wù)端口的占用。所以本文將利用socket實(shí)現(xiàn)多進(jìn)程的端口掃描器,需要的可以參考一下

作為開發(fā)人員經(jīng)常需要查看服務(wù)的端口開啟狀態(tài)判斷服務(wù)是否宕機(jī)。

特別是部署的服務(wù)比較多的情況下,可能存在幾個(gè)甚至幾十個(gè)服務(wù)端口的占用,于是我利用socket不斷向服務(wù)發(fā)送請(qǐng)求的方式來(lái)判斷端口服務(wù)是否已經(jīng)完成開啟。

其中加入多進(jìn)程的調(diào)用方式來(lái)提高端口掃描的效率,供大家參考!

首先,我們將需要的python模塊全部導(dǎo)入到我們的代碼塊中,若是沒有安裝的模塊使用pip的當(dāng)時(shí)安裝一下即可。

#?Importing?the?socket?module.
import?socket

#?Importing?the?datetime?module?from?the?datetime?package.
from?datetime?import?datetime

#?It's?a?shortcut?for?`from?multiprocessing?import?Pool`
from?multiprocessing.dummy?import?Pool

#?It's?a?shortcut?for?`from?loguru?import?logger`
from?loguru?import?logger

然后,創(chuàng)建一個(gè)端口掃描類PortScanner來(lái)完成對(duì)整個(gè)業(yè)務(wù)邏輯的處理,另外,封裝到類中也便于大家參考和修改。

class?PortScanner:
????def?__init__(self):
????????"""
????????A?constructor.?It?is?called?when?an?object?is?created?from?a?class?and?it?allows?the?class?to?initialize?the
????????attributes?of?a?class.
????????"""
????????super(PortScanner,?self).__init__()
????????self.remote_ip?=?None
????????self.ports?=?[]

????def?scanner(self,?port):
????????"""
????????It?scans?the?port.

????????:param?port:?The?port?you?want?to?scan
????????"""
????????try:
????????????socket_?=?socket.socket(socket.AF_INET,?socket.SOCK_STREAM)
????????????result_?=?socket_.connect_ex((self.remote_ip,?port))
????????????if?result_?==?0:
????????????????logger.info('地址:{}?端口:{}?已成功開啟!'.format(self.remote_ip,?port))
????????????else:
????????????????logger.info('地址:{}?端口:{}?未開啟!'.format(self.remote_ip,?port))
????????except?Exception?as?e:
????????????logger.error('端口掃描出現(xiàn)異常!')
????????finally:
????????????socket_.close()

????def?start(self):
????????"""
????????It?starts?the?game.
????????"""
????????remote_server?=?input("輸入要掃描的主機(jī)地址(127.0.0.1):")
????????if?remote_server.strip()?==?'':
????????????remote_server?=?'127.0.0.1'
????????self.remote_ip?=?socket.gethostbyname(remote_server)
????????port_range?=?input("輸入要掃描的端口范圍(1,50000):")
????????scanner_ports?=?[]
????????if?port_range.strip()?==?'':
????????????port_range?=?'1,50000'
????????scanner_ports?=?[n?for?n?in?range(int(port_range.split(',')[0]),?int(port_range.split(',')[1]))]
????????socket.setdefaulttimeout(0.5)
????????start_?=?datetime.now()
????????pool?=?Pool(processes=10)
????????pool.map(self.scanner,?scanner_ports)
????????pool.close()
????????pool.join()
????????end_?=?datetime.now()
????????logger.info('所有端口掃描已完成,總共耗時(shí):{}'.format(str(end_?-?start_)))

使用python模塊中的main函數(shù)調(diào)用整個(gè)端口掃描器執(zhí)行掃描任務(wù)。

#?It's?a?common?idiom?to?determine?if?the?script?is?being?run?directly?or?being?imported.
if?__name__?==?'__main__':
????scanner_?=?PortScanner()
????scanner_.start()

到此這篇關(guān)于Python利用socket實(shí)現(xiàn)多進(jìn)程的端口掃描器的文章就介紹到這了,更多相關(guān)Python socket多進(jìn)程端口掃描內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

贵溪市| 刚察县| 鄄城县| 苏尼特右旗| 临潭县| 西乌珠穆沁旗| 土默特右旗| 静乐县| 洪江市| 云浮市| 广饶县| 新化县| 六盘水市| 寿阳县| 东城区| 泰兴市| 寿宁县| 龙州县| 临西县| 安国市| 康平县| 台山市| 石首市| 灵武市| 三台县| 临沧市| 辽宁省| 曲水县| 牟定县| 克拉玛依市| 伊春市| 锡林郭勒盟| 北辰区| 北京市| 鹤峰县| 吴忠市| 灌云县| 呼和浩特市| 乐亭县| 海门市| 丽江市|