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 文件操作实现代码
Oct 07 Python
Python3基础之输入和输出实例分析
Aug 18 Python
python追加元素到列表的方法
Jul 28 Python
Python通过future处理并发问题
Oct 17 Python
详解Python3除法之真除法、截断除法和下取整对比
May 23 Python
python中的&&及||的实现示例
Aug 07 Python
pygame实现俄罗斯方块游戏(AI篇2)
Oct 29 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 Python
python re.match()用法相关示例
Jan 27 Python
Python pandas求方差和标准差的方法实例
Aug 04 Python
Python requests用法和django后台处理详解
Mar 19 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
第十二节 类的自动加载 [12]
2006/10/09 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
2020/07/22 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
详解Python3中的Sequence type的使用
2015/08/01 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
django+echart数据动态显示的例子
2019/08/12 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
python实现超级马里奥
2020/03/18 Python
python 如何调用远程接口
2020/09/11 Python
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
材料员岗位职责
2014/03/13 职场文书
货物运输服务质量承诺书
2014/05/29 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
升学宴祝酒词
2015/08/11 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书