From 0c124b2b002927e237c0d49dd29e1ce8a0243528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Martin-Leg=C3=A8ne?= <robert@nic.ar> Date: Fri, 26 Oct 2018 16:23:30 -0300 Subject: [PATCH] monitor.sh ahora se llama monitor.js y se mejoro --- bin/libbfa.js | 7 +++++ bin/monitor.js | 43 ++++++++++++++++++++++++++++ bin/monitor.sh | 76 -------------------------------------------------- 3 files changed, 50 insertions(+), 76 deletions(-) create mode 100755 bin/monitor.js delete mode 100755 bin/monitor.sh diff --git a/bin/libbfa.js b/bin/libbfa.js index 9b21511..d0bf483 100644 --- a/bin/libbfa.js +++ b/bin/libbfa.js @@ -100,6 +100,13 @@ module.exports = class Libbfa params: 0 }] }); + w3.eth.extend({ + methods: [{ + name: 'adminpeers', + call: 'admin_peers', + params: 0 + }] + }); if ( undefined != process.env.BFAACCOUNT ) { w3.eth.defaultAccount = this.account; } diff --git a/bin/monitor.js b/bin/monitor.js new file mode 100755 index 0000000..af6a5e1 --- /dev/null +++ b/bin/monitor.js @@ -0,0 +1,43 @@ +#!/usr/bin/node +// vim:syntax:filetype=javascript:ai:sm +// vim:expandtab:backspace=indent,eol,start:softtabstop=4 + +"use strict" + +const Libbfa = require( process.env.BFAHOME + '/bin/libbfa.js'); + +function monitor() +{ + var bfa = new Libbfa(); + var web3 = bfa.newweb3(); + var now = new Date(); + //console.log(web3.eth); + web3.eth.adminpeers().then( + function(nodelist) { + var peers = []; + nodelist.forEach( + function(node) { + if ( typeof(node.protocols.eth) == 'object' ) + { + var dir = "out"; + if ( node.network.inbound ) + dir = "in"; + peers.push( "peer "+dir+": "+node.enode ); + } + } + ); + console.log( + "UTC: " + now.toUTCString() + "\n" + + "BFA peers: " + peers.length + "\n" + + peers.sort().join("\n") + ); + }, + function(x) + { + console.log( x ); + process.exit(1) + } + ); +} + +monitor(); diff --git a/bin/monitor.sh b/bin/monitor.sh deleted file mode 100755 index 478e9cb..0000000 --- a/bin/monitor.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash - -if [ -z "${BFAHOME}" ]; then echo "\$BFAHOME not set. Did you source bfa/bin/env ?" >&2; exit 1; fi -source ${BFAHOME}/bin/libbfa.sh || exit 1 -ERRTEXT="Monitoring failed" - -function json_query -{ - local ERRTEXT="Monitoring RPC failed" - trap '' ERR - json=$( geth_rpc $* ) - trap errtrap ERR -} - -function json_arraylength -{ - jq -r length -} - -json_query admin_peers -test -n "${json}" || exit 0 -numpeers=$( echo $json | json_arraylength ) -statusfile=$( mktemp ) -cleanup "${statusfile}" -chmod 644 "${statusfile}" -echo -n "time: " > ${statusfile} -date >> ${statusfile} -echo "total-peer-count: ${numpeers}" >> ${statusfile} -peercount=0 -for idx in $( seq 0 $(( $numpeers - 1 )) ) -do - eth=$( echo "$json" | jq -r .[$idx].protocols.eth ) - if [ "$eth" = "handshake" ] - then - continue - fi - #echo -n "$idx: "; echo "$eth" | jq -c - remoteid=$( - echo "$json" | - jq -r .[$idx].id - ) - remoteaddress=$( - echo "$json" | - jq -r .[$idx].network.remoteAddress - ) - remoteip=$( - echo "$remoteaddress" | - sed 's/:[0-9][0-9]*$//' - ) - # IPv6 has the address surrounded by [ and ] - we strip that away - if [ "${remoteip:0:1}" = "[" -a "${remoteip:$((${#remoteip}-1))}" = "]" ] - then - remoteip="${remoteip:1:$((${#remoteip}-2))}" - fi - remoteport=$( - echo "$remoteaddress" | - sed 's/^.*://' - ) - echo "peer: enode://${remoteid}@[${remoteip}]:${remoteport}" >> $statusfile - mkdir -p "${BFANETWORKDIR}/lastseen/${remoteid}" - if [ -r "${BFANETWORKDIR}/lastseen/${remoteid}/${remoteip}" ] - then - storedport=$( cat "${BFANETWORKDIR}/lastseen/${remoteid}/${remoteip}" ) - test "${remoteport}" = "${storedport}" && - unset remoteport - fi - if [ -n "${remoteport}" ] - then - echo "${remoteport}" > "${BFANETWORKDIR}/lastseen/${remoteid}/${remoteip}" - else - touch "${BFANETWORKDIR}/lastseen/${remoteid}/${remoteip}" - fi - peercount=$(( $peercount + 1 )) -done -echo "valid-peer-count: ${peercount}" >> $statusfile -mv -f $statusfile ${BFANETWORKDIR}/status -- GitLab