babeld-cli.sh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/bin/sh
  2. print_help () {
  3. printf "babeld-cli [interfaces|neighbors|routes|xroutes|version]\n"
  4. }
  5. get_babeld_dump () {
  6. printf "dump\nquit\n" | nc ::1 33123
  7. }
  8. if [ ! "$1" ]
  9. then
  10. print_help
  11. elif [ "$1" = "interfaces" ]
  12. then
  13. dump=$(get_babeld_dump)
  14. printf "Interface\tState\tNext hop\n"
  15. printf '%s' "$dump" | grep "^add interface" | awk '{ split($0,a," "); print a[3], "\t", a[5], "\t", a[7] }'
  16. elif [ "$1" = "neighbors" ]
  17. then
  18. dump=$(get_babeld_dump)
  19. printf "Neighbor ID\tIP address\tInterface\tReach\tRX cost\tTX cost\tRTT\tRTT cost\tCost\n"
  20. printf '%s' "$dump" | grep "^add neighbour" | awk '{ split($0,a," "); print a[3], "\t", a[5], "\t", a[7], "\t", a[9], "\t", a[13], "\t", a[15], "\t", a[17], "\t", a[19], "\t", a[21] }'
  21. elif [ "$1" = "routes" ]
  22. then
  23. dump=$(get_babeld_dump)
  24. printf "Route ID\tPrefix\t\t\tInstalled\tID\t\t\tMetric\tRefmetric\tNext hop\tInterface\n"
  25. printf '%s' "$dump" | grep "^add route" | awk '{ split($0,a," "); print a[3], "\t", a[5], "\t", a[9], "\t", a[11], "\t", a[13], "\t", a[15], "\t", a[17], "\t", a[19] }'
  26. elif [ "$1" = "xroutes" ]
  27. then
  28. dump=$(get_babeld_dump)
  29. printf "Prefix\t\t\tMetric\n"
  30. printf '%s' "$dump" | grep "^add xroute" | awk '{ split($0,a," "); print a[5], "\t", a[9] }'
  31. elif [ "$1" = "version" ]
  32. then
  33. dump=$(get_babeld_dump)
  34. version=$(printf '%s' "$dump" | grep "^version" | awk '{ split($0,a," "); print a[2] }')
  35. host=$(printf '%s' "$dump" | grep "^host" | awk '{ split($0,a," "); print a[2] }')
  36. id=$(printf '%s' "$dump" | grep "^my-id" | awk '{ split($0,a," "); print a[2] }')
  37. printf 'Version: %s\n' "$version"
  38. printf 'Host: %s\n' "$host"
  39. printf 'Router ID: %s\n' "$id"
  40. else
  41. print_help
  42. fi