first commit
This commit is contained in:
commit
1869936ca4
29
check_as_path.py
Normal file
29
check_as_path.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import requests
|
||||||
|
import argparse
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def check_as_path(prefix, as_to_check):
|
||||||
|
url = f'https://stat.ripe.net/data/looking-glass/data.json?resource={prefix}'
|
||||||
|
response = requests.get(url)
|
||||||
|
if response.ok:
|
||||||
|
data = response.json()
|
||||||
|
for rrc in data['data']['rrcs']:
|
||||||
|
for peer in rrc['peers']:
|
||||||
|
as_path = peer['as_path']
|
||||||
|
if as_to_check in as_path:
|
||||||
|
print(f"CRITICAL: AS {as_to_check} found in AS path for prefix {prefix} at RRC {rrc['rrc']}")
|
||||||
|
return 2 # return critical
|
||||||
|
print(f"OK: AS {as_to_check} not found in AS path for prefix {prefix}")
|
||||||
|
return 0 # return OK
|
||||||
|
else:
|
||||||
|
print(f"UNKNOWN: Error fetching data from {url}")
|
||||||
|
return 3 # return unknown
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
parser = argparse.ArgumentParser(description='Check if a certain AS is in the AS path for any peers for a given prefix')
|
||||||
|
parser.add_argument('--prefix', required=True, help='IPv4 prefix to check')
|
||||||
|
parser.add_argument('--asn', required=True, help='AS number to check for')
|
||||||
|
args = parser.parse_args()
|
||||||
|
exit_code = check_as_path(args.prefix, args.asn)
|
||||||
|
sys.exit(exit_code)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user