bgp

- research & experiments with border gateway protocol
git clone git://git.acid.vegas/bgp.git
Log | Files | Refs | Archive | README

records.py (1645B)

      1 #!/usr/bin/env python3
      2 
      3 # Import pybgpstream and other necessary libraries
      4 from pybgpstream import BGPStream
      5 import time
      6 import argparse
      7 
      8 parser = argparse.ArgumentParser()
      9 parser.add_argument("print_amount", nargs=1, type=int, help="Number of prints")
     10 args = parser.parse_args()
     11 
     12 # Initialize BGPStream, with data from routeviews-stream for router amsix.
     13 stream = BGPStream(project='routeviews-stream', filter="router amsix")
     14 
     15 # Counter to stop BGPStream after X amount of prints.
     16 counter = 0
     17 
     18 # Print records yielded from stream.records() in a bgpreader-like format.
     19 for record in stream.records():
     20     # Print the first X records found.
     21     if counter >= args.print_amount[0]:
     22         break
     23     else:
     24         counter += 1
     25 
     26     print(record.project, record.collector, record.router)
     27     # Make the date is human readable
     28     rec_time = time.strftime('%y-%m-%d %H:%M:%S', time.localtime(record.time))
     29     for elem in record:
     30         # Print the current element in the record. Both are equivelent.
     31         # print(elem)
     32         print("{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}".format(
     33             elem.record_type,
     34             elem.type,
     35             rec_time,
     36             elem.project,
     37             elem.collector,
     38             elem.router,
     39             elem.router_ip,
     40             elem.peer_asn,
     41             elem.peer_address,
     42             elem._maybe_field("prefix"),
     43             elem._maybe_field("next-hop"),
     44             elem._maybe_field("as-path"),
     45             " ".join(elem.fields["communities"]) if "communities" in elem.fields else None,
     46             elem._maybe_field("old-state"),
     47             elem._maybe_field("new-state")
     48         ))