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正则表达式的使用范例详解
Aug 08 Python
深入讲解Python中的迭代器和生成器
Oct 26 Python
python实现可以断点续传和并发的ftp程序
Sep 13 Python
python删除过期log文件操作实例解析
Jan 31 Python
Python实现抢购IPhone手机
Feb 07 Python
实例讲解python中的协程
Oct 08 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
python对象与json相互转换的方法
May 07 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
Sep 20 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
Python连接mysql方法及常用参数
Sep 01 Python
python实现学生通讯录管理系统
Feb 25 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
hessian 在PHP中的使用介绍
2010/12/13 PHP
php 中英文语言转换类
2011/09/07 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
Javascript中arguments对象详解
2014/10/22 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
js中DOM事件绑定分析
2018/03/18 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
python实现定时播放mp3
2015/03/29 Python
Python3搜索及替换文件中文本的方法
2015/05/22 Python
Python中几种导入模块的方式总结
2017/04/27 Python
python实现内存监控系统
2021/03/07 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
python switch 实现多分支选择功能
2020/12/21 Python
Python之Sklearn使用入门教程
2021/02/19 Python
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
介绍一下JMS编程步骤
2015/09/22 面试题
名人演讲稿范文
2013/12/28 职场文书
部门2014年度工作总结
2014/11/12 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
2014年反洗钱工作总结
2014/11/22 职场文书
商业门面租房协议书
2014/11/25 职场文书
介绍信模板
2015/01/31 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
学生会工作感言
2015/08/07 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android
Python开发五子棋小游戏
2022/04/28 Python