香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Python扫描IP段查看指定端口是否开放的方法


时间:2021-12-08 14:51 作者:admin610456


本文实例讲述了python/' target='_blank'>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程序设计有所帮助。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)