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 daemon守护进程实现
Aug 27 Python
简单谈谈Python流程控制语句
Dec 04 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
使用tensorflow实现线性svm
Sep 07 Python
mac系统下Redis安装和使用步骤详解
Jul 09 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
python自动生成model文件过程详解
Nov 02 Python
关于tf.TFRecordReader()函数的用法解析
Feb 17 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 Python
Python日志logging模块功能与用法详解
Apr 09 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
python实现视频压缩功能
Dec 18 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
mysql+php分页类(已测)
2008/03/31 PHP
php魔术变量用法实例详解
2014/11/13 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
python实现udp传输图片功能
2020/03/20 Python
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
植物选择:Botanic Choice
2017/02/15 全球购物
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
Android面试宝典
2013/08/06 面试题
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
开业庆典致辞
2015/08/01 职场文书
《给予树》教学反思
2016/03/03 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
MySQL GRANT用户授权的实现
2021/06/18 MySQL
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis
Python中with上下文管理协议的作用及用法
2022/03/18 Python
Java使用HttpClient实现文件下载
2022/08/14 Java/Android