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 ))