Advertisement
Guest User

cached-consensus-stats

a guest
Aug 20th, 2012
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.57 KB | None | 0 0
  1. #!/bin/bash -e
  2.  
  3. # Non-Fast&Stable relays are ignored
  4. # BadExit flag disables Exit flag
  5. # Valid, Running flags are ignored (all relays have them)
  6. # Named, Unnamed, HSDir, V2Dir, Authority flags are ignored
  7.  
  8. insum() {
  9.     local sum=0 x=
  10.     while read x; do
  11.         sum=$((sum + x))
  12.     done
  13.     echo ${sum}
  14. }
  15.  
  16. cat cached-consensus \
  17.     | sed -rn 's/^r ([^ ]+ ){5}([^ ]+).*/\2/p; /^s /s:(s? |$):/:gp; s/^w Bandwidth=(.*)/\1^/p' \
  18.     | tr '\n^' ' \n' | sed 's/^ //' | sort -nrk3 \
  19.     | grep '/Fast.*/Stable' \
  20.     | sed -r 's:/(BadExit(/Exit)?|Fast|Stable|Named|Unnamed|Running|Valid|HSDir|V2Dir|Authority)::g' \
  21.     > nodes
  22.  
  23. guards=`awk '/\/Guard/ {print $3}' nodes | insum`
  24. exits=`awk '/\/Exit/ {print $3}' nodes | insum`
  25. total=`awk '{print $3}' nodes | insum`
  26.  
  27. echo "Guards: ${guards}, Exits: ${exits}, Total: ${total}"
  28.  
  29. rm -f nodes-sniff
  30. snsum=0
  31. ord=0
  32. cat nodes | while read ip flags bw; do
  33.     if [ ${flags} = /Exit/Guard/ ]; then
  34.         snsum=$((snsum + bw))
  35.         gper=$(((snsum * 100 + 50) / guards))
  36.         eper=$(((snsum * 100 + 50) / exits))
  37.  
  38.         # mark same-Class-C subnets, don't aggregate with non-Exit+Guard
  39.         # (so lower bound, but doesn't seem to matter much)
  40.         if grep -qs "^${ip%.*}\." nodes-sniff; then
  41.             ip=" ${ip}"
  42.         else
  43.             ord=$((ord + 1))
  44.         fi
  45.  
  46.         echo -e "${ip}\t\t\t${gper} ${eper}\t\t${ord} $((gper * eper))" >> nodes-sniff
  47.     fi
  48. done
  49.  
  50. cat nodes-sniff \
  51.     | awk '{print $4,$5}' \
  52.     | tac | sort -nuk1 \
  53.     | sed 's/[0-9][0-9]$/.&%/' \
  54.     > nodes-sniff-summary
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement