成熟atlas api的python包装
ripe.atlas.cousteau的Python项目详细描述
成熟的阿特拉斯库斯托
(直到版本0.9.*此包装支持v1 api。0.10及以上版本的v2成熟的atlas api仅受支持。)
安装
您可以通过克隆repo进行安装,并在内部运行以下命令 回购:
$ python setup.py install
或通过PIP使用:
$ pip install ripe.atlas.cousteau
用法
创建测量
创建两个新的成熟的Atlas UDM非常简单:
fromdatetimeimportdatetimefromripe.atlas.cousteauimport(Ping,Traceroute,AtlasSource,AtlasCreateRequest)ATLAS_API_KEY=""ping=Ping(af=4,target="www.google.gr",description="testing new wrapper")traceroute=Traceroute(af=4,target="www.ripe.net",description="testing",protocol="ICMP",)source=AtlasSource(type="area",value="WW",requested=5)atlas_request=AtlasCreateRequest(start_time=datetime.utcnow(),key=ATLAS_API_KEY,measurements=[ping,traceroute],sources=[source],is_oneoff=True)(is_success,response)=atlas_request.create()
请记住,这个图书馆试图遵守 在 文档页面中。这意味着如果您试图创建 请求缺少按要求声明的字段,库将不去 继续并执行http查询。相反,它会引起一个例外 里面有一些信息。 可用的测量类型有ping、traceroute、dns、sslcert、ntp、http。
改变测量源
同样,如果要更改(在下面的示例中添加)探测
对于现有测量,您可以执行以下操作:
fromripe.atlas.cousteauimportAtlasChangeSource,AtlasChangeRequestATLAS_MODIFY_API_KEY=""source=AtlasChangeSource(value="GR",requested=3,type="country",action="add")atlas_request=AtlasChangeRequest(key=ATLAS_MODIFY_API_KEY,msm_id=1000001,sources=[source])(is_success,response)=atlas_request.create()
同样的道理,如果你想移除探针,你只需要 将"action"键更改为"remove",并指定要删除的探测。 请记住,remove操作只支持探测列表,而不支持其他源类型。 有关更多信息,请查看相应的
停止测量
您可以使用以下命令停止测量:
fromripe.atlas.cousteauimportAtlasStopRequestATLAS_STOP_API_KEY=""atlas_request=AtlasStopRequest(msm_id=1000001,key=ATLAS_STOP_API_KEY)(is_success,response)=atlas_request.create()
标记和取消标记测量值
您可以使用以下命令添加或删除测量上的标记:
fromripe.atlas.cousteauimportMeasurementTaggerATLAS_STOP_API_KEY=""MSM_ID=2000001tagger=MeasurementTagger(key=ATLAS_STOP_API_KEY)(is_success,response)=tagger.add_tag(msm_id=MSM_ID,tag="my-tag")(is_success,response)=tagger.remove_tag(msm_id=MSM_ID,tag="my-tag")
发出任何api get请求
如果你知道url路径,你可以很容易地向atlas发出任何请求 API.
url_path="/api/v2/anchors"request=AtlasRequest(**{"url_path":url_path})result=namedtuple('Result','success response')(is_success,response)=request.get()ifnotis_success:returnFalsereturnresult.response["participant_count"]
获取结果
您可以使用cousteau获取任何测量的结果。在 下面的示例获取测量ID 2016892的所有结果 以及2015-05-19和2015-05-20之间的探头ID 1、2、3、4。时代可以 是python datetime对象、unix时间戳或字符串表示 日期:
fromdatetimeimportdatetimefromripe.atlas.cousteauimportAtlasResultsRequestkwargs={"msm_id":2016892,"start":datetime(2015,5,19),"stop":datetime(2015,5,20),"probe_ids":[1,2,3,4]}is_success,results=AtlasResultsRequest(**kwargs).create()ifis_success:print(results)
获取实时结果
fromripe.atlas.cousteauimportAtlasStreamdefon_result_response(*args):""" Function that will be called every time we receive a new result. Args is a tuple, so you should use args[0] to access the real message. """printargs[0]atlas_stream=AtlasStream()atlas_stream.connect()# Measurement resultschannel="atlas_result"# Bind function we want to run with every result message receivedatlas_stream.bind_channel(channel,on_result_response)# Subscribe to new stream for 1001 measurement resultsstream_parameters={"msm":1001}atlas_stream.start_stream(stream_type="result",**stream_parameters)# Probe's connection status resultschannel="atlas_probestatus"atlas_stream.bind_channel(channel,on_result_response)stream_parameters={"enrichProbes":True}atlas_stream.start_stream(stream_type="probestatus",**stream_parameters)# Timeout all subscriptions after 5 secs. Leave seconds empty for no timeout.# Make sure you have this line after you start *all* your streamsatlas_stream.timeout(seconds=5)# Shut down everythingatlas_stream.disconnect()
每个流类型的可用流参数在 流结果文档
过滤探头/测量值
此功能基于指定的筛选器查询API以获取探测/测量。过滤器 应在 过滤器api中指定。它隐藏了遍历的所有复杂性 每次有更多对象时使用下一个url的api。它返回 可用于访问每个对象的python生成器。
使用asn_v4 3333和标记nat从nl获取所有探测
$ python setup.py install0
获取所有指定的测量值。
$ python setup.py install1
用python表示探针/测量元数据
这将允许您拥有一个python对象,该对象的属性由探测/测量元数据填充。 每次您创建一个新实例时,它都会从API中获取元数据,并返回一个具有选定属性的对象。
$ python setup.py install2