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


Posted in Python onJune 09, 2015

本文实例讲述了Python扫描IP段查看指定端口是否开放的方法。分享给大家供大家参考。具体实现方法如下:

#!/usr/local/bin/python
#-*- coding: UTF-8 -*-
####################################################################
##################################################
#BLOG:http://hi.baidu.com/alalmn
# Python 扫描IP段 指定端口是否开放
##################################################
import socket
import threading,time
socket.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 ini
if __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="" #扫描IP
IP2=""  #当前已经扫到的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错误"
    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程序设计有所帮助。

Python 相关文章推荐
python实现通过pil模块对图片格式进行转换的方法
Mar 24 Python
python根据日期返回星期几的方法
Jul 06 Python
Python读取网页内容的方法
Jul 30 Python
Python使用os模块和fileinput模块来操作文件目录
Jan 19 Python
深入理解Python3中的http.client模块
Mar 29 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
Dec 12 Python
opencv与numpy的图像基本操作
Mar 08 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
pytorch1.0中torch.nn.Conv2d用法详解
Jan 10 Python
wxpython自定义下拉列表框过程图解
Feb 14 Python
Python爬虫UA伪装爬取的实例讲解
Feb 19 Python
python实战之90行代码写个猜数字游戏
Apr 22 Python
Python实现数据库编程方法详解
Jun 09 #Python
Python读写文件方法总结
Jun 09 #Python
六个窍门助你提高Python运行效率
Jun 09 #Python
python数组复制拷贝的实现方法
Jun 09 #Python
Python函数返回值实例分析
Jun 08 #Python
python下MySQLdb用法实例分析
Jun 08 #Python
Python赋值语句后逗号的作用分析
Jun 08 #Python
You might like
php中神奇的fastcgi_finish_request
2011/05/02 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
cakephp常见知识点汇总
2017/02/24 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
input框中的name和id的区别
2016/11/16 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
使用微信SDK自定义分享的方法
2019/07/03 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
python字典键值对的添加和遍历方法
2016/09/11 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
导致python中import错误的原因是什么
2020/07/01 Python
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
省三好学生申请材料
2014/01/22 职场文书
小学美术教学反思
2014/02/01 职场文书
材料化学专业求职信
2014/07/15 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
分享3个非常实用的 Python 模块
2022/03/03 Python