python3 批量获取对应端口服务的实例


Posted in Python onJuly 25, 2019

思路懒得写了.

依赖python-nmap,先在电脑上装nmap,不然用不了.openpyxl实际上没有用到,可以不安装.

makeEx()没用到,懒得删了.

#依赖python-nmap,openpyxl包
import nmap
import time
import openpyxl
from multiprocessing.dummy import Pool as ThreadPool
import multiprocessing
# 1.同目录下创建一个input.txt,放入ip地址列(从xlsx中直接粘贴即可)
# 2.输出表格位置,需要先创建这个表格
expath=''
inputFile='remain.txt'

#扫描端口
#port='1521,1158,2100,3306,1433,1434,5000,5432,27017,6379,11211,80,8080,443,8000,8081,7001,9080,9090,22,23,10027,3389,5631,111,6000,135,445,139,21,25,110,69,161,162,53,5901,5902,2601-2609 '
# port='1-65535'
#默认命令
arg='-Pn -T4 -sV'
#输出文件名

import time
time_rq = time.strftime('%Y-%m-%d', time.localtime(time.time()))
outPutFile = time_rq + inputFile



def readfile(path,lock):
  # 返回url列表
  file = open(path, 'r',encoding='utf-8')
  urlList=[]
  portList=[]
  for eachline in file.readlines():
    #获得地址段
    x=eachline.split()
    url=x[0]
    port=x[1]
    # add=IPy.IP(url)#地址段列表
    # for u in add:
    #   ip=u.__str__();
    #   urlList.append(ip)
    urlList.append(url)
    portList.append(port)


  file.close()
  # 造infoList
  infoList=[]
  for index,url in enumerate(urlList):
    info={'hostname':url,'port':portList[index],'arg':arg,'lock':lock}
    infoList.append(info)

  return infoList

def scan(info):

  hostName=info['hostname']
  port=info['port']
  lock=info['lock']
  print(hostName+' '+port+' 扫描开始')

  scanner=nmap.PortScanner()
  scanner.scan(hosts=hostName,ports=port,arguments=arg)

  # print(res)
  out=open(outPutFile,'a+',encoding='utf-8')
  # out.write()
  state=scanner[hostName].state()
  tcp_ports=scanner[hostName].all_tcp()
  print(hostName+' '+state)
  for ports in tcp_ports:
    if scanner[hostName]['tcp'][ports]['state'] =='open' :
      st=hostName+' '+str(ports)+' '+scanner[hostName]['tcp'][ports]['name']+'\n'
      # lock.acquire()
      out.write(st)
      print(st)    
      # lock.release()

  # print(hostName)
  out.close()


def makeEx():
  print('----------------开始写入-------------------')
  wb=openpyxl.load_workbook(expath)
  sheet=wb.active
  c=open(outPutFile,'r',encoding='utf-8')
  i=1
  for line in c.readlines():
    linelist=line.split()
    ip=linelist[0]
    port=linelist[1]
    name=linelist[2]
    status=linelist[3]
    for j in range(4):
      if j==3:
        n=linelist[j]
        n=n.rsplit()
        n=n[0]
        sheet.cell(row=i, column=j + 1, value=n)
      else:
        sheet.cell(row=i,column=j+1,value=linelist[j])
    i=i+1
  c.close()
  wb.save(expath)
  print('----------------写入完成-------------------')


if __name__ == '__main__':

  print('----------------扫描开始-------------------')
  lock=multiprocessing.Manager().Lock()

  start=time.time()
  pool = ThreadPool(30)

  infolist=readfile(inputFile,lock)
  pool.map(scan,infolist)
  pool.close()
  pool.join()
  finish=time.time()
  print('----------------扫描完成-------------------')
  t=finish-start
  print('用时 %f'%t)
  out = open(outPutFile, 'a+', encoding='utf-8')
  out.write('\n用时 %f'%t)

  # makeEx()
  # info={'hostname':'135.233.115.55','port':'22,23,21,80,3389,5901,5902','arg':'-Pn -sV -T4'}

以上这篇python3 批量获取对应端口服务的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python ElementTree 基本读操作示例
Apr 09 Python
python基础入门学习笔记(Python环境搭建)
Jan 13 Python
Python网络编程中urllib2模块的用法总结
Jul 12 Python
Python 中的with关键字使用详解
Sep 11 Python
Python中的二维数组实例(list与numpy.array)
Apr 13 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
python变量命名的7条建议
Jul 04 Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 Python
python 实现图片修复(可用于去水印)
Nov 19 Python
cookies应对python反爬虫知识点详解
Nov 25 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 28 Python
python中 .npy文件的读写操作实例
Apr 14 Python
Python实现微信小程序支付功能
Jul 25 #Python
Form表单及django的form表单的补充
Jul 25 #Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 #Python
python按修改时间顺序排列文件的实例代码
Jul 25 #Python
在python中用url_for构造URL的方法
Jul 25 #Python
对python中url参数编码与解码的实例详解
Jul 25 #Python
使用WingPro 7 设置Python路径的方法
Jul 24 #Python
You might like
PHP分页函数代码(简单实用型)
2010/12/02 PHP
PHP 时间日期操作实战
2011/08/26 PHP
PHP基础知识介绍
2013/09/17 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
简述php环境搭建与配置
2016/12/05 PHP
PHP会话控制实例分析
2016/12/24 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
Jquery promise实现一张一张加载图片
2015/11/13 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
javascript html5移动端轻松实现文件上传
2020/03/27 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
python中pop()函数的语法与实例
2020/12/01 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
思想品德自我鉴定
2013/10/12 职场文书
开业庆典策划方案
2014/02/18 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
正规欠条模板
2015/07/03 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
创业计划书之闲置物品置换中心
2019/12/25 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS