...
BUT that way, I could NOT find 85.214.65.220 which is
api.nhzcrypto.org.
So ... something in my strategy is not perfect yet.
I might not be finding all nodes!Happy about any suggestion.
My bash script finds peer 85.214.65.220:7774/api.nhzcrypto.org:7774
#!/bin/bash
SDATE=`date '+%Y-%m-%d-%H-%M-%S'`
RESULTS="peer-results-${SDATE}.txt"
PEER_SERVER_PORT="7774"
PEER_URI_SUFFIX="nhz"
FIRST_PEER="eu6.woll-e.net"
declare -A assoPeers
exists(){
if [ "$2" != in ]; then
echo "Wrong syntax!"
echo "Syntax: exists {key} in {array}"
return
fi
eval '[ ${'$3'[$1]+test} ]'
}
typeset -i addCounter=0
function getPeerInfo() {
peer="$1"
addCounter=0
ROW="$peer "
# test whether announced address includes a port
if [ `echo $peer| grep ':'|wc -l` -gt 0 ]; then
URI="http://${peer}/${PEER_URI_SUFFIX}"
else
URI="http://${peer}:${PEER_SERVER_PORT}/${PEER_URI_SUFFIX}"
fi
ROW2=`curl --silent -4 -m5 --data '{"platform":"TEST","protocol":1,"application":"TEST Bot","requestType":"getInfo","version":"v0.1"}' "${URI}" | tr '\r\|\n' ' '`
if [ $? -gt 0 ]; then
assoPeers["${peer}"]="error getInfo"
return 1
fi
sleep 0.1
peerVersion=`echo "$ROW2" | jshon -C -Q -e version | sed -e 's/"//g'`
ROW3=`curl --silent -4 -m5 --data '{"platform":"TEST","protocol":1,"application":"TEST Bot","requestType":"getCumulativeDifficulty","version":"v0.1"}' "${URI}" | tr '\r\|\n' ' '`
ROW2+=" ${ROW3}"
if [ $? -gt 0 ]; then
assoPeers["${peer}"]="error getCumulativeDifficulty"
return 1
fi
sleep 0.1
peerHeight=`echo "$ROW3" | jshon -C -Q -e blockchainHeight | sed -e 's/"//g'`
PEERS=`curl --silent -4 -m5 --data '{"platform":"TEST","protocol":1,"application":"TEST Bot","requestType":"getPeers","version":"v0.1"}' "${URI}"| jshon -C -Q -e peers | grep -v '\]\|\['| sed -e 's/[" ,]//g'`
if [ $? -gt 0 ]; then
assoPeers["${peer}"]="error getPeers"
return 1
fi
ROW2+=" "`echo $PEERS|tr '\r\|\n' ' '`
# read peers into an array
IFS=$'\n ' read -r -d '' -a peersarray < <(printf '%s\0' "$PEERS")
#add only elements from peersarray into the associative array which doesn't exist
if [ "${#peersarray[@]}" -gt 0 ]; then
for a in "${peersarray[@]}"; do
if ! exists "$a" in assoPeers; then
assoPeers["$a"]="0";
addCounter=addCounter+1
fi
done
fi
ROW+=" ${#peersarray[@]} $addCounter ${#assoPeers[@]}"
assoPeers["${peer}"]="$ROW $ROW2"
printf "${peerCounter}\t${#peersarray[@]}\t$addCounter\t${#assoPeers[@]}\t${peer}\t${peerVersion}\t${peerHeight}\n" | tee -a $RESULTS
}
function isNextPeer() {
nextPeer=""
for key in ${!assoPeers[@]}; do
if [ "${assoPeers[${key}]}" == "0" ]; then
assoPeers["${key}"]="started"
nextPeer="${key}"
return 0
fi
done
return 1
}
### MAIN ###
typeset -i peerCounter=1
printf "counter\tpeers\tnew\ttotal\thost\tversion\theight\n"| tee -a $RESULTS
getPeerInfo "${FIRST_PEER}"
while isNextPeer; do
peerCounter=peerCounter+1
getPeerInfo "$nextPeer"
done