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简单进程锁代码实例
Apr 27 Python
python打开url并按指定块读取网页内容的方法
Apr 29 Python
使用Python生成随机密码的示例分享
Feb 18 Python
Python字典简介以及用法详解
Nov 15 Python
Tornado高并发处理方法实例代码
Jan 15 Python
Python3 replace()函数使用方法
Mar 19 Python
Python pygorithm模块用法示例【常见算法测试】
Aug 16 Python
对Python中的条件判断、循环以及循环的终止方法详解
Feb 08 Python
举例讲解Python常用模块
Mar 08 Python
python add_argument()用法解析
Jan 29 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
Jun 23 Python
python 爬取吉首大学网站成绩单
Jun 02 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 smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
php获取根域名方法汇总
2014/10/28 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
2015/11/25 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
Python遍历目录中的所有文件的方法
2016/07/08 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
Python urllib2运行过程原理解析
2020/06/04 Python
Django实现内容缓存实例方法
2020/06/30 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
error和exception有什么区别
2012/10/02 面试题
JPA的特点
2014/10/25 面试题
校园之声广播稿
2014/01/31 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
上班迟到检讨书
2015/05/06 职场文书
小学生手册家长意见
2015/06/03 职场文书
python基础详解之if循环语句
2021/04/24 Python
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python