Python掃描IP段查看指定端口是否開放的方法
本文實(shí)例講述了Python掃描IP段查看指定端口是否開放的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
#!/usr/local/bin/python #-*- coding: UTF-8 -*- #################################################################### ################################################## #BLOG:http://hi.baidu.com/alalmn # Python 掃描IP段 指定端口是否開放 ################################################## import socket import threading,time socket.setdefaulttimeout(10) #設(shè)置了全局默認(rèn)超時(shí)時(shí)間 #查看IP端口是否開放 class socket_port(threading.Thread): def __init__(self,cond, name): super(socket_port, self).__init__() self.cond = cond self.cond.set()#將標(biāo)識(shí)位設(shè)為Ture self.HOST = name def run(self): #time.sleep(1) #確保先運(yùn)行Seeker中的方法 try: PORT=21 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((self.HOST,PORT)) print"" print self.HOST,u":",PORT,u"端口開放" #self.cond.wait()#堵塞線程,直到Event對(duì)象內(nèi)部標(biāo)識(shí)位被設(shè)為True或超時(shí)(如果提供了參數(shù)timeout)。 self.cond.set()#將標(biāo)識(shí)位設(shè)為Ture return 1 except: print ".", #print self.HOST,u":",PORT,u"端口未開放" #self.cond.wait()#堵塞線程,直到Event對(duì)象內(nèi)部標(biāo)識(shí)位被設(shè)為True或超時(shí)(如果提供了參數(shù)timeout)。 self.cond.set()#將標(biāo)識(shí)位設(shè)為Ture return 0 ## #socket_port("192.168.2.1") #if socket_port("192.168.2.100"): # print "開放" #else: # print "未開放" def ip2num(ip): ip = [int(x) for x in ip.split('.')] return ip[0]<<24 | ip[1]<<16 | ip[2]<<8 | ip[3] def num2ip(num): #time.sleep(0.05) #50ms #time.sleep(0.1) #s # data='%s.%s.%s.%s' % ( (num & 0xff000000) >> 24, # (num & 0x00ff0000) >> 16, # (num & 0x0000ff00) >> 8, # num & 0x000000ff ) # #socket_port(data) #查看IP端口是否開放 if num>=IPend: print u"IP導(dǎo)入數(shù)組完成" return '%s.%s.%s.%s' % ( (num & 0xff000000) >> 24, (num & 0x00ff0000) >> 16, (num & 0x0000ff00) >> 8, num & 0x000000ff ) def gen_ip(ip1,ip2): #返回?cái)?shù)組 # ip # global IPend # start, IPend = [ip2num(x) for x in ip.split('-')] global IPend IPend=ip2 return [num2ip(num) for num in range(ip1,ip2+1) if num & 0xff] import ini if __name__=='__main__': ini.ini_get() #讀取INI list_ip=gen_ip(ip2num(ini.IP1),ip2num(ini.IP2)) I1 = 0 #得到list的第一個(gè)元素 print u"開始掃描IP" ip=0 while I1 < len(list_ip): #print list_ip[I1] time.sleep(0.3) #確保先運(yùn)行Seeker中的方法 cond = threading.Event() hider = socket_port(cond,list_ip[I1]) hider.start() if ip>=255: ini.ini_write(list_ip[I1],ini.IP2) #修改INI print ip ip=0 ip=ip+1 I1 = I1 + 1 #一層
ini.py:
#!/usr/local/bin/python #-*- coding: UTF-8 -*- ################################################## #qq:316118740 #BLOG:http://hi.baidu.com/alalmn # Python 操作ini文件 # 剛學(xué)寫的不好請(qǐng)大家見諒 ################################################## IP1="" #掃描IP IP2="" #當(dāng)前已經(jīng)掃到的IP INITXT="IP.ini" #INI文件名字 import ConfigParser def ini_get(): #讀取INI try: global IP1 global IP2 global INITXT config = ConfigParser.ConfigParser() config.readfp(open(INITXT)) IP1 = config.get("ipdata","ip1") IP2 = config.get("ipdata","ip2") except: print "讀取INI錯(cuò)誤" ini_add("","") #寫入INI def ini_add(ip1,ip2): #寫入INI try: global INITXT config = ConfigParser.ConfigParser() config.add_section("ipdata")# 設(shè)置section段及對(duì)應(yīng)的值 config.set("ipdata","ip1",ip1) config.set("ipdata","ip2",ip2) config.write(open(INITXT, "w"))# 寫入文件 except: print "寫入INI錯(cuò)誤" def ini_write(ip1,ip2): #修改INI try: global INITXT config = ConfigParser.ConfigParser() config.read(INITXT) if not config.has_section("ipdata"):#看是否存在該Section,不存在則創(chuàng)建 temp = config.add_section("") config.set("ipdata","ip1",ip1) config.set("ipdata","ip2",ip2) config.write(open(INITXT, "r+")) except: print "修改INI錯(cuò)誤" ini_add("","") #寫入INI #if __name__=='__main__': ## ini_get() #讀取INI ## print IP1 ## print IP2 # ## ini_add("222222222","3333333333333") #寫入INI ## ini_get() #讀取INI ## print IP1 ## print IP2 # # ini_write("999999999","0000000000") #修改INI # ini_get() #讀取INI # print IP1 # print IP2
運(yùn)行:
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
使用python實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲
這篇文章主要為大家詳細(xì)介紹了使用python實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03python?操作?mongodb?數(shù)據(jù)庫(kù)詳情
這篇文章主要介紹了python?操作?mongodb?數(shù)據(jù)庫(kù)詳情,通過鏈接數(shù)據(jù)庫(kù),創(chuàng)建數(shù)據(jù)庫(kù)展開內(nèi)容詳細(xì),具有一定的參考價(jià)值,需要的的小伙伴可以參考一下2022-04-04基于python實(shí)現(xiàn)藍(lán)牙通信代碼實(shí)例
這篇文章主要介紹了基于python實(shí)現(xiàn)藍(lán)牙通信代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11python 判斷l(xiāng)inux進(jìn)程,并殺死進(jìn)程的實(shí)現(xiàn)方法
今天小編就為大家分享一篇python 判斷l(xiāng)inux進(jìn)程,并殺死進(jìn)程的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07基于Python實(shí)現(xiàn)評(píng)論區(qū)抽獎(jiǎng)功能詳解
這篇文章主要為大家介紹了基于Python如何實(shí)現(xiàn)評(píng)論區(qū)抽獎(jiǎng)的功能,文章的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的朋友可以學(xué)習(xí)一下2021-12-12Dlib+OpenCV深度學(xué)習(xí)人臉識(shí)別的方法示例
這篇文章主要介紹了Dlib+OpenCV深度學(xué)習(xí)人臉識(shí)別的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05