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聚类算法之基本K均值实例详解
Nov 20 Python
python中OrderedDict的使用方法详解
May 05 Python
python模拟事件触发机制详解
Jan 19 Python
python简易实现任意位数的水仙花实例
Nov 13 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
python3+selenium自动化测试框架详解
Mar 17 Python
Django缓存系统实现过程解析
Aug 02 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
Python 求数组局部最大值的实例
Nov 26 Python
python 实现turtle画图并导出图片格式的文件
Dec 07 Python
Python第三方库的几种安装方式(小结)
Apr 03 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 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
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
Sanic框架流式传输操作示例
2018/07/18 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
毕业生造价工程师求职信
2013/10/17 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
网管求职信
2014/03/03 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
医院志愿者活动总结
2015/05/06 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android