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中的装饰器的用法
Apr 24 Python
python使用in操作符时元组和数组的区别分析
May 19 Python
python Matplotlib画图之调整字体大小的示例
Nov 20 Python
Python I/O与进程的详细讲解
Mar 08 Python
python自动结束mysql慢查询会话的实例代码
Oct 27 Python
python基于socket实现的UDP及TCP通讯功能示例
Nov 01 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
python socket通信编程实现文件上传代码实例
Dec 14 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 Python
Python尾递归优化实现代码及原理详解
Oct 09 Python
Python带你从浅入深探究Tuple(基础篇)
May 15 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
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
js实现表格字段排序
2014/02/19 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
js数组去重的hash方法
2016/12/22 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
python 一维二维插值实例
2020/04/22 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
小区门卫岗位职责
2013/12/31 职场文书
安全生产责任书
2014/03/12 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
2014年基层党建工作总结
2014/11/11 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
文明旅游倡议书
2015/04/28 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL