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实现简单的四则运算计算器
Nov 02 Python
Django实现自定义404,500页面教程
Mar 26 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
Jul 04 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
Python celery原理及运行流程解析
Jun 13 Python
python3.7调试的实例方法
Jul 21 Python
python matplotlib库的基本使用
Sep 23 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 Python
Jupyter Notebook 如何修改字体和大小以及更改字体样式
Jun 03 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 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
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
PHP aes (ecb)解密后乱码问题
2015/06/22 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
移动端界面的适配
2017/01/11 Javascript
js实现滑动滑块验证登录
2020/07/24 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
python flask中静态文件的管理方法
2018/03/20 Python
python实现数据库跨服务器迁移
2018/04/12 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
Python根据服务获取端口号的方法
2019/09/25 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
体育教育个人自荐信范文
2013/12/01 职场文书
现金会计岗位职责
2013/12/05 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
村容村貌整治方案
2014/05/21 职场文书
员工升职自荐信
2015/03/27 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python