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 "
Peer | type | state |
";
+
+/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 " | filtered ${outp} |
"
+ else
+ echo " | no filtered routes |
"
+ fi
+done
+
+echo "
"
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 "Peer | type | state | ";
+ if (print_info == 1) {
+ print "Info | ";
+ }
+ print "
";
+ #rowspan='2'
+# print "imported | exported | preferred |
";
+}
+END {
+ print "
";
+}
+
+
+# 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