I’m using bird on my routers for a few years now, and every time I setup a new router I add these shell functions to help me monitor and debug network issues:
function bgp_states { for i in $(birdc show protocols|sed 's/\s\+/|/g'|grep BGP); do a=(${i//|/ }) echo ${a[*]}|awk '{printf "%-16s\t%s\t%s\t%s\t%s\t%s\n", $1, $2, $3, $4, $5, $6;}' birdc show protocol all ${a[0]}|grep Routes done } function show_route { range=$1 all='' if [[ $1 == for ]]; then range=$2; fi if [[ $1 == all ]]; then all='all'; range=$2; fi if [[ $range =~ [a-z] ]]; then range=$(host -t A $range|head -n1|cut -d ' ' -f 4) fi birdc show route $all for $range table main } function bgp_info { birdc "show protocols all $1" }