Python掃描IP段查看指定連接埠是否開放的方法

來源:互聯網
上載者:User
本文執行個體講述了Python掃描IP段查看指定連接埠是否開放的方法。分享給大家供大家參考。具體實現方法如下:

#!/usr/local/bin/python#-*- coding: UTF-8 -*-#######################################################################################################################BLOG:http://hi.baidu.com/alalmn# Python 掃描IP段 指定連接埠是否開放##################################################import socketimport threading,timesocket.setdefaulttimeout(10) #設定了全域預設逾時時間#查看IP連接埠是否開放class socket_port(threading.Thread):  def __init__(self,cond, name):    super(socket_port, self).__init__()    self.cond = cond    self.cond.set()#將標識位設為Ture    self.HOST = name  def run(self):    #time.sleep(1) #確保先運行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對象內部標識位被設為True或逾時(如果提供了參數timeout)。      self.cond.set()#將標識位設為Ture      return 1    except:      print ".",      #print self.HOST,u":",PORT,u"連接埠未開放"      #self.cond.wait()#堵塞線程,直到Event對象內部標識位被設為True或逾時(如果提供了參數timeout)。      self.cond.set()#將標識位設為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匯入數組完成"  return '%s.%s.%s.%s' % ( (num & 0xff000000) >> 24,               (num & 0x00ff0000) >> 16,               (num & 0x0000ff00) >> 8,               num & 0x000000ff )def gen_ip(ip1,ip2): #返回數組#  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 iniif __name__=='__main__':  ini.ini_get() #讀取INI  list_ip=gen_ip(ip2num(ini.IP1),ip2num(ini.IP2))  I1 = 0 #得到list的第一個元素  print u"開始掃描IP"  ip=0  while I1 < len(list_ip):    #print list_ip[I1]    time.sleep(0.3) #確保先運行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檔案# 剛學寫的不好請大家見諒##################################################IP1="" #掃描IPIP2=""  #當前已經掃到的IPINITXT="IP.ini" #INI檔案名稱字import ConfigParserdef 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錯誤"    ini_add("","") #寫入INI def ini_add(ip1,ip2): #寫入INI  try:    global INITXT    config = ConfigParser.ConfigParser()    config.add_section("ipdata")# 設定section段及對應的值    config.set("ipdata","ip1",ip1)    config.set("ipdata","ip2",ip2)    config.write(open(INITXT, "w"))# 寫入檔案  except:    print "寫入INI錯誤"def ini_write(ip1,ip2): #修改INI  try:    global INITXT    config = ConfigParser.ConfigParser()    config.read(INITXT)    if not config.has_section("ipdata"):#看是否存在該Section,不存在則建立      temp = config.add_section("")    config.set("ipdata","ip1",ip1)    config.set("ipdata","ip2",ip2)    config.write(open(INITXT, "r+"))  except:    print "修改INI錯誤"    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

運行:

代碼如下:

python TCP21.py

希望本文所述對大家的Python程式設計有所協助。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.