From 6078935504c752afebefd8e570a6f29f6b05bcdb Mon Sep 17 00:00:00 2001 From: uvok cheetah Date: Sun, 2 Feb 2025 14:58:44 +0100 Subject: Various bird stuff (awk) --- other_scripts/authkey | 1 + other_scripts/bgpreport.sh | 19 ++++++++++++++++++ other_scripts/bird2.awk | 29 ++++++++++++++++++++++++++ other_scripts/birdroutes.awk | 48 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 other_scripts/authkey create mode 100644 other_scripts/bgpreport.sh create mode 100644 other_scripts/bird2.awk create mode 100644 other_scripts/birdroutes.awk diff --git a/other_scripts/authkey b/other_scripts/authkey new file mode 100644 index 0000000..6f31e1a --- /dev/null +++ b/other_scripts/authkey @@ -0,0 +1 @@ +command="/usr/sbin/birdcl -r s p | /usr/bin/awk -v print_info=0 -v pref='^p_' -f /root/bird.awk" diff --git a/other_scripts/bgpreport.sh b/other_scripts/bgpreport.sh new file mode 100644 index 0000000..ae82b0c --- /dev/null +++ b/other_scripts/bgpreport.sh @@ -0,0 +1,19 @@ +#!/bin/bash +echo ""; + +/usr/sbin/birdcl -r s p | while read -r line; do + outp=$(echo "$line" | /usr/bin/awk -v print_info=0 -v pref='^p_' -f /root/bird2.awk) + if [[ -z "$outp" ]]; then + continue + fi + echo "$outp" + protocol=$(echo "$line" | awk -e '{ print $1; }') + outp=$(birdcl -r "show route where bgp_large_community ~ [(CLEARNET_ASN, LC_FILTERED, *)] protocol ${protocol} table t_myas_unfiltered count" | grep t_myas_unfiltered | grep -E -o "[1-9][0-9]* of [0-9]+ routes") + if [[ -n "$outp" ]]; then + echo "" + else + echo "" + fi +done + +echo "
Peertypestate
filtered ${outp}
no filtered routes
" diff --git a/other_scripts/bird2.awk b/other_scripts/bird2.awk new file mode 100644 index 0000000..f61a35c --- /dev/null +++ b/other_scripts/bird2.awk @@ -0,0 +1,29 @@ +# Intended purpose: Pipe birdc s p all into this script - line by line / protocol by protocol + +# initialize variable +BEGIN { + if (!pref) { + pref="^p_"; + } + + proto=""; +} + +# default output for birdc, filter +$1=="BIRD" || $1=="Name" { + next +} + +# if line begins with dn and is a BGP line +$0 ~ pref && $2=="BGP" { + proto=$1 + print "" $1 "" $2 "" $4 ""; + next +} + +# for every other line "starting" a protocol +/^[a-zA-Z]/ { + # reset proto + proto="" + next +} diff --git a/other_scripts/birdroutes.awk b/other_scripts/birdroutes.awk new file mode 100644 index 0000000..615917a --- /dev/null +++ b/other_scripts/birdroutes.awk @@ -0,0 +1,48 @@ +# Intended purpose: Pipe birdc s p all into this script + +# initialize variable +BEGIN { + if (!pref) { + pref="^p_"; + } + if (print_info=="") { + print_info=0; + } + + proto=""; + print ""; + if (print_info == 1) { + print ""; + } + print ""; + #rowspan='2' +# print ""; +} +END { + print "
PeertypestateInfo
importedexportedpreferred
"; +} + + +# default output for birdc, filter +$1=="BIRD" || $1=="Name" { + next +} + +# if line begins with dn and is a BGP line +$0 ~ pref && $2=="BGP" { + proto=$1 + print "" $1 "" $2 "" $4 ""; + if (print_info == 1) { + print "" $6 ""; + } + print ""; + #rowspan='2' + next +} + +# for every other line "starting" a protocol +/^[a-zA-Z]/ { + # reset proto + proto="" + next +} -- cgit v1.2.3