From 254b883b4f930d895a8ef3402641978c8c78cb4f Mon Sep 17 00:00:00 2001 From: poka Date: Thu, 10 Sep 2020 23:05:41 +0200 Subject: [PATCH] A few month later ... --- g1-stats.sh | 52 +++++++++++++++++++++++++++++++++++++++----------- soldeByDays.sh | 21 ++++++++++---------- sum.sh | 15 ++++++++------- 3 files changed, 60 insertions(+), 28 deletions(-) diff --git a/g1-stats.sh b/g1-stats.sh index 25d905b..7760ac8 100755 --- a/g1-stats.sh +++ b/g1-stats.sh @@ -20,45 +20,68 @@ echo -e "\n############# $day à $startTime #############\n" [[ -z $(which jq) || -z $(which bc) ]] && apt update && apt install jq bc echo "Initialisation ..." outFile="/tmp/g1-stats-$day-$startTime_$id" -TXBLOCKS=$(curl -s ${DUNITER}/blockchain/with/tx | jq '.result.blocks[]') +TXBLOCKS=$(cat $SCRIPTPATH/db/txblocs) +#TXBLOCKS=$(curl -s ${DUNITER}/blockchain/with/tx | jq '.result.blocks[]') #TXBLOCKS+=$(curl -s ${DUNITER2}/blockchain/with/tx | jq '.result.blocks[]') #TXBLOCKS+=$(curl -s ${DUNITER3}/blockchain/with/tx | jq '.result.blocks[]') TXBLOCKS=($(echo "$TXBLOCKS" | sort -hu | awk '{printf $1" "}')) unset 'TXBLOCKS[${#TXBLOCKS[@]}-1]' -MEMBERS=($(curl -s ${DUNITER}/wot/members | jq '.results[].pubkey' | tr -d '"')) +MEMBERS=$(curl -s ${DUNITER}/wot/members | jq -r '.results[].pubkey') nbrMembers=${#MEMBERS[@]} lastBloc=${TXBLOCKS[-1]} isWeb=$1 ### Extraction des adresses Ḡ1 actives ### +echo "[" > $SCRIPTPATH/db/recus.json loopWalletUp() { for i in ${TXBLOCKS[*]}; do [[ -z ${TXBLOCKS[$i]} ]] && break sleep 0.1 WALLETS0=$(curl -s ${DUNITER}/blockchain/block/${TXBLOCKS[$i]}) - until WALLETS=$(echo $WALLETS0 | jq '.time,(.transactions[] | select(.issuers[0] as $issuers | .outputs[0]|contains($issuers)|not) | .outputs[0])' 2>/dev/null); do + until WALLETS=$(echo $WALLETS0 | jq -r '.medianTime,(.transactions[] | select(.issuers[0] as $issuers | .outputs[0]|contains($issuers)|not) | .outputs[0])' 2>/dev/null); do [[ $isWeb != "web" ]] && echo -e "iter $iter \n$WALLETS0" sleep 2 WALLETS0=$(curl -s ${DUNITER}/blockchain/block/${TXBLOCKS[$i]}) done [[ -z "$WALLETS" ]] && continue + bloc=${TXBLOCKS[$i]} # Récupération de la date du block blockDate=$(echo "$WALLETS" | head -n1) blockDate=$(date -d"@$blockDate" +%y-%m-%d -u) + WALLETS=$(echo "$WALLETS" | tail -n +2) - WALLETS=$(echo "$WALLETS" | tail -n +2 | tr -d '"' | awk -F '(' '{ print $2 }' | tr -d ')') + jsonify() { + [[ -z $valueBlocW ]] && valueBlocW=0 || valueBlocW=$(echo "scale=2; $valueBlocW/100" | bc) + [[ -z $valueBlocM ]] && valueBlocM=0 || valueBlocM=$(echo "scale=2; $valueBlocM/100" | bc) + local jsonTPL=$(sed s/_DATE/$blockDateLast/g $SCRIPTPATH/tpl/recus.json) + local jsonTPL=$(sed s/_RWALLETS/$valueBlocW/g <<< $jsonTPL) + local jsonTPL=$(sed s/_RMEMBRES/$valueBlocM/g <<< $jsonTPL) + echo -e "$jsonTPL" | tr -d '\\' >> $SCRIPTPATH/db/recus.json + } - # Journalisation - echo -e "$WALLETS \n" | sed 's/ /\n/g' | sed '/^[[:space:]]*$/d' | sort -u >> $SCRIPTPATH/tmp/$blockDate + if [[ -n $blockDateLast && $blockDateLast != $blockDate ]]; then + jsonify + unset valueBlocM valueBlocW + fi - bloc=${TXBLOCKS[$i]} - wallets+=$(echo -e "$WALLETS \n" | sed 's/ /\\n/g') + blockDateLast=$blockDate + + for i in $WALLETS; do + pubkey=$(echo $i | awk -F '(' '{ print $2 }' | tr -d ')') + value=$(echo $i | awk -F: '{ print $1 }') + + if [[ $(echo "$MEMBERS" | grep $pubkey) ]]; then + valueBlocM=$(($valueBlocM+$value)) + pubkeyBlocM+=${pubkey}\\n + else + valueBlocW=$(($valueBlocW+$value)) + pubkeyBlocW+=${pubkey}\\n + fi + done progress=$(echo "scale=1; $bloc*100/$lastBloc/1" | bc) - - if [[ $isWeb != "web" ]]; then clear echo "Heure de début: $startTime" @@ -70,9 +93,16 @@ loopWalletUp() { ((iter++)) done + + jsonify + sed -i '$ s/,//g' $SCRIPTPATH/db/recus.json + echo "]" >> $SCRIPTPATH/db/recus.json } loopWalletUp +$SCRIPTPATH/sum.sh +exit + ### Isolation des membres et wallets dans les fichiers de journalisation lsDays=$(ls $SCRIPTPATH/tmp) for i in $lsDays; do @@ -217,7 +247,7 @@ for i in $pubkeys; do done if [[ $1 == "mbr" ]]; then - nonConsumedUD=$(curl -s ${DUNITER}/ud/history/$i | jq '.history.history[].amount' | awk '{s+=$1} END {print s}') || nonConsumedUD=0 + nonConsumedUD=$(curl -s ${DUNITER}/ud/history/$i | jq -r '.history.history[].amount' | awk '{s+=$1} END {print s}') || nonConsumedUD=0 [[ -z $nonConsumedUD ]] && nonConsumedUD=0 nonConsumedUDT=$(echo -e "scale=2; ($nonConsumedUD/100)+$nonConsumedUDT" | bc) fi diff --git a/soldeByDays.sh b/soldeByDays.sh index 9540374..549c513 100755 --- a/soldeByDays.sh +++ b/soldeByDays.sh @@ -19,7 +19,7 @@ k=0 l=0 for i in $lsDays; do # [[ $l -ge 20 ]] && break ## ((k++)) && continue -## ((l++)) +# ((l++)) walletDay=$(cat $SCRIPTPATH/tmp/$i) [[ -z $walletDay ]] && continue @@ -45,19 +45,20 @@ for i in $lsDays; do soldes=$(cat $SCRIPTPATH/tmp/${i}_solde | awk '{total+=$1}END{print total}') echo $soldes > $SCRIPTPATH/tmp/${i}_solde - # Écriture en JSON + # Écriture en JSON + jsonify() { + local jsonTPL=$(sed s/_DATE/$dateT/g $SCRIPTPATH/tpl/recus.json) + local jsonTPL=$(sed s/_RWALLETS/$1/g <<< $jsonTPL) + local jsonTPL=$(sed s/_RMEMBRES/$2/g <<< $jsonTPL) + echo -e "$jsonTPL" | tr -d '\\' >> $SCRIPTPATH/db/recus.json + } + soldes=$(echo "scale=2; $soldes/100" | bc) if [[ $i =~ "_mbr" ]]; then - local jsonTPL=$(sed s/_DATE/$dateT/g $SCRIPTPATH/tpl/recus.json) - local jsonTPL=$(sed s/_RWALLETS/_RWALLETS_$dateT/g <<< $jsonTPL) - local jsonTPL=$(sed s/_RMEMBRES/$soldes/g <<< $jsonTPL) - echo -e "$jsonTPL" | tr -d '\\' >> $SCRIPTPATH/db/recus.json + jsonify _RWALLETS_$dateT $soldes elif [[ $i =~ "_wallets" ]]; then if [[ ! $(grep $dateT $SCRIPTPATH/db/recus.json) ]]; then - local jsonTPL=$(sed s/_DATE/$dateT/g $SCRIPTPATH/tpl/recus.json) - local jsonTPL=$(sed s/_RWALLETS/$soldes/g <<< $jsonTPL) - local jsonTPL=$(sed s/_RMEMBRES/0/g <<< $jsonTPL) - echo -e "$jsonTPL" | tr -d '\\' >> $SCRIPTPATH/db/recus.json + jsonify $soldes 0 else sed -i s/_RWALLETS_$dateT/$soldes/g $SCRIPTPATH/db/recus.json fi diff --git a/sum.sh b/sum.sh index cce3926..b4b04ce 100755 --- a/sum.sh +++ b/sum.sh @@ -1,25 +1,26 @@ #!/bin/bash old() { -echo "Total: $(echo $(($(cat tmp/*_solde | awk '{total+=$1}END{print total}')/100)) | sed ':a;s/\B[0-9]\{3\}\>/.&/;ta')" echo "Wallets: $(echo $(($(cat tmp/*wallets_solde | awk '{total+=$1}END{print total}')/100)) | sed ':a;s/\B[0-9]\{3\}\>/.&/;ta')" echo "Membres: $(echo $(($(cat tmp/*mbr_solde | awk '{total+=$1}END{print total}')/100)) | sed ':a;s/\B[0-9]\{3\}\>/.&/;ta')" +echo "Total: $(echo $(($(cat tmp/*_solde | awk '{total+=$1}END{print total}')/100)) | sed ':a;s/\B[0-9]\{3\}\>/.&/;ta')" echo "Fichiers vides:" for i in $(ls tmp/*_solde); do ! [[ $(cat $i) ]] && echo $i ; done } json() { - sumW=$(jq -r '.[].rWallets' db/recus.json | awk '{ SUM += $1} END { printf "%.2f", SUM }' | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta') - sumM=$(jq -r '.[].rMembres' db/recus.json | awk '{ SUM += $1} END { printf "%.2f", SUM }' | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta') - sumT=$(jq -r '.[] | .rWallets, .rMembres' db/recus.json | awk '{ SUM += $1} END { printf "%.2f", SUM }' | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta') + sumW=$(jq -r '.[].rWallets' $1 | awk '{ SUM += $1} END { printf "%.2f", SUM }' | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta') + sumM=$(jq -r '.[].rMembres' $1 | awk '{ SUM += $1} END { printf "%.2f", SUM }' | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta') + sumT=$(jq -r '.[] | .rWallets, .rMembres' $1 | awk '{ SUM += $1} END { printf "%.2f", SUM }' | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta') echo "Wallets: $sumW" echo "Membres: $sumM" echo "Total: $sumT" - echo "Fichiers vides:" - for i in $(ls tmp/*_solde); do ! [[ $(cat $i) ]] && echo $i ; done +# echo "Fichiers vides:" +# for i in $(ls tmp/*_solde); do ! [[ $(cat $i) ]] && echo $i ; done } -json +json db/recus.json +#json db/recus.json.bk