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单线程实现多个定时器示例
Mar 30 Python
在Python 中同一个类两个函数间变量的调用方法
Jan 31 Python
python制作图片缩略图
Apr 30 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
Sep 25 Python
django ajax发送post请求的两种方法
Jan 05 Python
pycharm快捷键汇总
Feb 14 Python
Python3 webservice接口测试代码详解
Jun 23 Python
pytorch加载自己的图像数据集实例
Jul 07 Python
Python 实现将某一列设置为str类型
Jul 14 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
Python基础之hashlib模块详解
May 06 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版(3)
2006/10/09 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
php快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
python读取word文档的方法
2015/05/09 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
numpy数组拼接简单示例
2017/12/15 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
迷你西餐厅创业计划书范文
2013/12/31 职场文书
大学生村官典型材料
2014/01/12 职场文书
旷课检讨书大全
2014/01/21 职场文书
班级道德讲堂实施方案
2014/02/24 职场文书
活动总结报告格式
2014/05/09 职场文书
运动员获奖感言
2014/08/15 职场文书
婚内分居协议书范文
2014/11/26 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
放假通知
2015/04/14 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL