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中exit、return、sys.exit()等使用实例和区别
May 28 Python
让python在hadoop上跑起来
Jan 27 Python
Python之py2exe打包工具详解
Jun 14 Python
python实现八大排序算法(2)
Sep 14 Python
解决安装pycharm后不能执行python脚本的问题
Jan 19 Python
Python 抓取微信公众号账号信息的方法
Jun 14 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
详解一种用django_cache实现分布式锁的方式
Sep 01 Python
常用python爬虫库介绍与简要说明
Jan 25 Python
从0到1使用python开发一个半自动答题小程序的实现
May 12 Python
Numpy实现卷积神经网络(CNN)的示例
Oct 09 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_MySQL教程-第一天
2007/03/18 PHP
PHP开发的一些注意点总结
2010/10/12 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
Python星号*与**用法分析
2018/02/02 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
tensorflow之并行读入数据详解
2020/02/05 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
TCP/IP的分层模型
2013/10/27 面试题
大学新生军训感言
2014/02/25 职场文书
商铺租房协议书范本
2014/12/04 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python