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 相关文章推荐
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 Python
零基础写python爬虫之打包生成exe文件
Nov 06 Python
Python机器学习之SVM支持向量机
Dec 27 Python
Python爬虫实现(伪)球迷速成
Jun 10 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 Python
python面试题小结附答案实例代码
Apr 11 Python
tensorflow 限制显存大小的实现
Feb 03 Python
对Tensorflow中tensorboard日志的生成与显示详解
Feb 04 Python
python数据分析:关键字提取方式
Feb 24 Python
python对接ihuyi实现短信验证码发送
May 10 Python
Python学习之包与模块详解
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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
中国站长站 For Dede4.0 采集规则
2007/05/27 PHP
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
2015/11/07 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
express框架下使用session的方法
2019/07/31 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
简单谈谈Python中的json与pickle
2017/07/19 Python
基于Python os模块常用命令介绍
2017/11/03 Python
对Python实现累加函数的方法详解
2019/01/23 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
武汉高蓝德国际.net机试
2016/06/24 面试题
医学类个人求职信范文
2014/02/05 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
二年级小学生评语
2014/04/21 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
使用JS实现简易计算器
2021/06/14 Javascript
无线电知识基础入门篇
2022/02/18 无线电
golang操作rocketmq的示例代码
2022/04/06 Golang