下载routeview网站上的BGP更新数据

news2024/10/5 15:04:37

需求

给出起始时间和终止时间,从routeview网站上,下载在这两者之间的所有数据到本机,以便于进行后续的分析工作。
例如:2022.2.23 - 2022.2.26
在这里插入图片描述

主要流程

主流程在遍历每个月中实现

  1. 当月份小于10时,前面加‘0’,对齐格式
  2. 拼接带点的字符串,构成所指向的第三级网址
  3. 访问对应月份的网页,下载其html,其中包含了每个文件的文件名
  4. 遍历该月中,所要求的日期,同样对齐一下格式
  5. 构造应该命令行管道,对html进行字符匹配,获得每个文件的名称,输出到对应文件中
    *grep -o "updates.bz2"" indexfiles/updates.$ymdot.html 命令的作用是:

在文件 indexfiles/updates.$ymdot.html 中查找以 “updates” 开头,以 “.bz2” 结尾的字符串,并输出到标准输出。
其中,-o 选项表示只输出匹配的部分,不包括前后的内容。\ 用于转义双引号,防止其被解释为结束符。$ymdot 是一个变量,用于表示文件名中的日期部分,例如 “updates.20230619.html”。

tr -d ‘"’ 命令的作用是:将标准输入中的双引号字符删除,并输出结果到标准输出中。其中,-d 选项表示删除指定的字符。这个命令的作用是将前一个 grep 命令输出的结果中的双引号字符删除。
> 是命令行重定向符号,将前一个命令输出的结果保存到指定的文件中,覆盖原有内容(如果文件已经存在),或者创建一个新文件并写入数据(如果文件不存在)。
在这个例子中,indexfiles/filelist.updates.$ymdot 文件将会存储上述命令的最终输出结果。
综上所述,这个命令行管道的作用是在指定的 HTML 文件中查找以 “updates” 开头、以 “.bz2” 结尾的字符串,并删除其中的双引号字符,然后将结果输出到指定的文件 (indexfiles/filelist.updates.$ymdot) 中。最终实现的效果是,生成一个不带双引号的文件列表,其中包含了所有以 “updates” 开头、以 “.bz2” 结尾的字符串。

  1. 按照生成的文件列表,依次下载对应的BGP更新数据包
    wget命令作用:
  • -B http://archive.routeviews.org/bgpdata/$ymdot/UPDATES/ :设置 URL 的前缀,即下载的文件路径为 http://archive.routeviews.org/bgpdata/$ymdot/UPDATES/ 下的文件。
  • –limit-rate=50k :限制下载速率为 50KB/s,以防止过多占用网络资源
  • -w 10 :等待下载时间,即在两次下载之间等待 10 秒,避免下载过于频繁导致服务器拒绝连接。
  • –random-wait :随机等待时间,更加真实地模拟人工下载。
  • -N :只下载更新过的文件,不重新下载已经存在的文件。
  • -P ./ :将文件保存在当前脚本所在文件夹内
  • -i indexfiles/filelist.updates. y m d o t :从名为 i n d e x f i l e s / f i l e l i s t . u p d a t e s . ymdot :从名为 indexfiles/filelist.updates. ymdot:从名为indexfiles/filelist.updates.ymdot 的文件中读取要下载的文件列表。

代码

yearb=2022
yeare=2022
monthb=2
monthe=2
dayb=22
daye=23

for year in $(seq $yearb $yeare) 
do
	for month in $(seq $monthb $monthe) 
	do
		ymdot='' # 带点的年月,访问网址(archive.routeviews.org/bgpdata/2003.02/UPDATES/)需要
		ym='' # 不带点的年月,下载文件时,文件名不带点
		if [ $month -lt 10 ]
		then
			ymdot=$year'.0'$month
			ym=$year'0'$month
			echo $ym
		else
			ymdot=$year'.'$month
			ym=$year$month
			echo $ym
		fi

		# 直接将文件页面的html下载下来
		if [ ! -f indexfiles/updates.$ymdot.html ];
		then
			echo "Downloading index of updates"
			mkdir indexfiles
			# using http
    		wget -O indexfiles/updates.$ymdot.html http://archive.routeviews.org/bgpdata/$ymdot/UPDATES/
    		# using ftp
    		# wget -O indexfiles/updates.$ymdot.html ftp://archive.routeviews.org/route-views2/$ymdot/UPDATES/
		fi

		# 由于 > 是命令行重定向符号,将前一个命令输出的结果保存到指定的文件中,覆盖原有内容(如果文件已经存在)
		# 因此对于一天的文件,应该通过管道筛选后,马上下载,即 循环中应该是 管道筛选+下载
		for day in $(seq $dayb $daye) 
		do
			if [ $day -lt 10 ]
			then
				ymd=$ym'0'$day
				echo $ymd
			else
				ymd=$ym$day
				echo $ymd
			fi
			

			# Extract the list of "updates" files and save it to another file
			if [ ! -f indexfiles/filelist.updates.$ymd ];
			then
				echo "Creating list of updates"
				grep -o "updates.$ymd.*bz2\"" indexfiles/updates.$ymdot.html | tr -d '\"' > indexfiles/filelist.updates.$ymd
			fi

			# Download the updates files from filelist, ignore already downloaded files
			wget -B http://archive.routeviews.org/bgpdata/$ymdot/UPDATES/ --limit-rate=50k -w 10 --random-wait -N -P ./ -i indexfiles/filelist.updates.$ymd
		done
    done
done

最终效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/663720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算力军备竞赛白热化 “卖铲人”联想集团竞争力如何?

继微软通过OpenAI推出GPT系列、谷歌推出Bard和PaLM-E2之后,国内AI大模型也呈百家争鸣态势,年初至今,国内科技巨头几乎都发布了自研AI大模型产品,AI竞赛全面升级的背后,是全球科技巨头们对算力的争夺,作为算…

【kali学习笔记】利用第三方服务对目标进行被动信息收集

一、被动信息收集 1、概念: 信息收集的方式分为两种:被动收集和主动收集。被动信息收集方式是指利用第三方的服务对目标进行访问了解,比如Google搜索。主动信息收集方式:通过直接访问、扫描网站,这种流量流经网站的行…

Qt 中动态加载窗口(C++)

在编程中,我经常会遇见要根据用户触发按钮,动态生成窗口的情况。在此有两种方法可以动态生成窗口:一:直接在槽函数中调用窗口类。二:将 **.ui 添加到资源文件,通过 QUiLoader 加载。 现将两种方法介绍如下…

redhat 6.4安装oracle11g RAC (二)

创建一个asm Disk Group Name 组,并给一个名称ORC,并选择下面的三块盘,然后 Next错误的原因是由于磁盘数和冗余层级不匹配: 如果创建用来存放OCR和VOTEDISK的ASM磁盘组,那么External、Normal、High三种冗余级别对应的…

企业文件安全必知!掌握低代码平台的应用,事半功倍保障文件安全

在数字时代的今天,企业档案的安全变得比以往任何时候都更加重要。这些文件可能包含有关客户的敏感信息或必须始终保护的专有业务数据。但是,保护这些文件可能是一个复杂且耗时的过程,对于没有专门IT团队的公司来说尤其如此。这就是低代码平台…

组合式API【Vue3】

Vue3组合式API体验 通过一个 Counter&#xff08;自增&#xff09;案例 体验Vue3新引入的组合式API Vue2的代码&#xff1a; <template><button click"addCount">{{count}}</button> </template> <script> export default {data(){r…

SynchronousQueue的TransferQueue源码分析

QNode的源码信息分析 一行一行的分析大概内容&#xff1b;下面会省略大量的CAS操作当前节点可以获取到的next节点item在生产者和消费者下有所不同。生产者是有数据。消费者为null。waiter为当前线程isData属性是用来区分消费者和生产者的属性。值得一提的是最终生产者需要将it…

2023年我国省市县的高新技术企业数量(Excel/Shp格式)

企业是经济活动的参与主体。一个城市的企业数量决定了这个城市的经济发展水平&#xff01;比如一个城市的金融企业较多&#xff0c;那这个城市的金融产业肯定比较发达&#xff1b;一个城市的制造业企业较多&#xff0c;那这个城市的制造业肯定比较发达。 目前&#xff0c;在城…

Android 13(T) - Media框架 - 异步消息机制

由于网上已经有许多优秀的博文讲解了Android的异步消息机制&#xff08;ALooper/AHandler/AMessage那一套&#xff09;&#xff0c;而且流程也不是很复杂&#xff0c;所以这里将不会去讲代码流程。本篇将会记录学习过程中的疑问以及自己的解答&#xff0c;希望可以帮助有同样疑…

机器学习——感知机模型(手动代码)

感知机&#xff0c;应该是很简单的模型了 1. 建立模型 感知机的模型&#xff0c;是一种多元线性回归符号函数的二分类模型。 多元线性回归函数&#xff1a;【Z &#xfeff;&#xfeff;&#xfeff; W T X W^{T}X WTX】 符号函数&#xff1a; y sign(Z) 1&#xff0c;当y…

vulhub-struts2-S2-008 远程代码执行漏洞复现

漏洞描述 影响版本: 2.1.0 - 2.3.1 漏洞原理 S2-008 涉及多个漏洞&#xff0c;Cookie 拦截器错误配置可造成 OGNL 表达式执行&#xff0c;但是由于大多 Web 容器&#xff08;如 Tomcat&#xff09;对 Cookie 名称都有字符限制&#xff0c;一些关键字符无法使用使得这个点显得…

JAVA-IO流实践操作

什么是IO流&#xff1f; I&#xff1a;Input O&#xff1a;Output 通过IO可以完成硬盘文件的读和写。 流是一连串连续动态的数据集合。可以理解为是我们在内存和硬盘之间进行文件读写的一个管道。抽象的一个概念。我们可以看成是一个管道&#xff0c;我们输入的数据要从管道…

C语言编程—强制类型转换

强制类型转换是把变量从一种类型转换为另一种数据类型。例如&#xff0c;如果您想存储一个 long 类型的值到一个简单的整型中&#xff0c;您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型&#xff0c;如下所示&am…

PyTorch 深度学习 || 2. 全连接网络 | Ch2.2 PyTorch 全连接网络分类

PyTorch 全连接网络分类 文章目录 PyTorch 全连接网络分类1. 非线性二分类2. 泰坦尼克号数据分类2.1 数据的准备工作2.2 全连接网络的搭建2.3 结果的可视化 1. 非线性二分类 import sklearn.datasets #数据集 import numpy as np import matplotlib.pyplot as plt from sklear…

从源码角度分析 MyBatis 工作原理

一、MyBatis架构 从 MyBatis 代码实现的角度来看&#xff0c;MyBatis 的主要组件有以下几个&#xff1a; SqlSession - 作为 MyBatis 工作的主要顶层 API&#xff0c;表示和数据库交互的会话&#xff0c;完成必要数据库增删改查功能。 Executor - MyBatis 执行器&#xff0c;…

前端自动化测试的核心概念及思考

本文&#xff0c;将主要结合钉钉中的业务实践和落地&#xff0c;描述笔者对前端自动化测试场景的理解。 本文将主要从“为什么前端要做自动化测试、前端自动化测试分类、业务做自动化测试要抓住的核心点、核心工具推荐“这四个部分做阐述&#xff0c;下面直接进入正文。 大钉…

【嵌入式Linux内核驱动】05_IIC子系统 | 硬件原理与常见面试问题 | 应用编程 | 内核驱动 | 总体框架

硬件原理 IIC协议 IIC 基础 IIC协议简介—学习笔记_iic标准协议_越吃越胖的黄的博客-CSDN博客 简介 I2C&#xff08;Inter-Integrated Circuit&#xff09;是一种串行通信协议&#xff0c;用于连接微控制器、传感器、存储器和其他外设。 I2C使用两条线&#xff08;SDA和S…

Spark 1--3章简介,架构体系, 环境搭建

今天开始了新的课程 由我们的星哥带领我们踏入Spark的神秘殿堂 01_SparkCore 1. Spark简介 1.1 什么是Spark Spark是一种快速、通用、可扩展的大数据分析引擎&#xff0c;2009年诞生于加州大学伯克利分校AMPLab&#xff0c;2010年开源&#xff0c;2013年6月成为Apache孵化…

Cisco模拟器配置OSPF

一、前言 1.1 本文为Cisco模拟器配置OSPF操作笔记 (供新手参考&#xff09; 使用Cisco模拟器&#xff0c;配置OSPF协议&#xff0c;并使各台电脑ping通&#xff0c;如下参考图&#xff01; 1.2 思科路由器设置ip设置 在将设备摆放完毕后&#xff0c;需要配置每台设备的IP&…