python3扫描局域网开放端口_Python 扫描IP段 指定端口是否开放,pythonip,Python 扫描IP段...

使用Python实现扫描指定IP段内的主机,检查TCP 21端口是否开放。通过创建多线程进行并发扫描,提高效率。同时,代码包含读写ini配置文件功能,用于记录扫描状态。
摘要由CSDN通过智能技术生成

Python 扫描IP段 指定端口是否开放,pythonip,Python 扫描IP段

Python 扫描IP段 指定端口是否开放 TCP21.py ```python

!/usr/local/bin/python

-- coding: UTF-8 --

qq:316118740

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 IPendIPend=ip2return [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 ```python#!/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("","") #写入INIdef 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

运行pythonTCP21.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值