nimbus-eth1-blobs/scripts/extract-nimbus-sync-client-...

76 lines
1.3 KiB
Bash

#! /bin/sh
#
# Parse raw nimbus-eth1 logs and extract client IDs from connection information.
# List all clients that delivered some sync data. Also, find out whether data
# provided were sent as chunked messages.
#
# Non-efficient programming -- but it does the job
datadir=datadir-nimbus-${1:-kiln}
# --------------------
blanks=" "
case `echo -e ''` in
-e*) say=echo ;;
*) say='echo -e'
esac
stripColors() {
if ansi2txt </dev/null 2>/dev/null
then
ansi2txt
else
cat
fi
}
dump_data() {
cat $datadir/log/* | stripColors
}
filter_nodes() {
sed \
-e '/ Requesting block headers /!d' \
-e '/ peer=enode:/!d' \
-e 's/.*@//'
}
filter_client_id() { # Syntax: <node>
sed \
-e '/ peer=Node\['"$1"'\] /!d' \
-e '/ clientId=/!d' \
-e 's/.* clientId=\([^ ]*\).*/\1/' \
-eq
}
filter_chunked() { # Syntax: <node>
sed \
-e '/ peer=Node\['"$1"'\] /!d' \
-e '/ chunked /!d' \
-e 's/.*/chunked/' \
-eq
}
# --------------------
dump_data |
filter_nodes |
sort -u |
(
while
read node
do
cid=`dump_data | filter_client_id $node`
chk=`dump_data | filter_chunked $node`
$say "\r*** $node $cid $chk $blanks\r\c" >&2
echo $cid $chk
done
$say "\r$blanks$blanks$blanks\r\c" >&2
) |
sort |
uniq -c
# End