Skip to content

Instantly share code, notes, and snippets.

@Stadicus
Last active November 21, 2021 12:36
Show Gist options
  • Select an option

  • Save Stadicus/ffbbd855d23cd068f7b739cae6440f4b to your computer and use it in GitHub Desktop.

Select an option

Save Stadicus/ffbbd855d23cd068f7b739cae6440f4b to your computer and use it in GitHub Desktop.

Revisions

  1. Stadicus revised this gist Mar 6, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion 20-thundroid-welcome
    Original file line number Diff line number Diff line change
    @@ -76,7 +76,7 @@ if [ -n ${btc_path} ]; then
    elif [ ${block_diff} -le 10 ]; then # <= 2 blocks behind
    sync="Catching up"
    sync_color="${color_red}"
    sync_behind="${block_diff} blocks behind"
    sync_behind="${block_diff} blocks"
    else
    sync="In progress"
    sync_color="${color_red}"
  2. Stadicus revised this gist Mar 3, 2018. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions 20-thundroid-welcome
    Original file line number Diff line number Diff line change
    @@ -130,9 +130,9 @@ public_addr="${public_ip}:${public_port}"
    #ln_channels_online="$(/home/bitcoin/bin/eclair-cli channels | jq '[.[] | select(.state=="NORMAL")] | length')"

    # LND
    ln_alias="$(/usr/local/bin/lncli --macaroonpath=${lnd_dir}/readonly.macaroon getinfo | jq -r '.alias')" 2>null
    ln_channels_online="$(/usr/local/bin/lncli --macaroonpath=${lnd_dir}/readonly.macaroon getinfo | jq -r '.num_active_channels')"
    ln_channels_total="$(/usr/local/bin/lncli --macaroonpath=${lnd_dir}/readonly.macaroon listchannels | jq '.[] | length')"
    ln_alias="$(/usr/local/bin/lncli --macaroonpath=${lnd_dir}/readonly.macaroon --tlscertpath=${lnd_dir}/tls.cert getinfo | jq -r '.alias')" 2>null
    ln_channels_online="$(/usr/local/bin/lncli --macaroonpath=${lnd_dir}/readonly.macaroon --tlscertpath=${lnd_dir}/tls.cert getinfo | jq -r '.num_active_channels')"
    ln_channels_total="$(/usr/local/bin/lncli --macaroonpath=${lnd_dir}/readonly.macaroon --tlscertpath=${lnd_dir}/tls.cert listchannels | jq '.[] | length')"

    printf "
    ${color_yellow} ___________
  3. Stadicus revised this gist Mar 3, 2018. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions 20-thundroid-welcome
    Original file line number Diff line number Diff line change
    @@ -51,7 +51,7 @@ network_tx=$(ifconfig eth0 | grep 'TX bytes' | awk '{ print $7$8 }' | sed 's/[()
    # Bitcoin blockchain
    btc_path=$(command -v bitcoin-cli)
    if [ -n ${btc_path} ]; then
    btc_title=" itcoin"
    btc_title="฿itcoin"

    chain="$(bitcoin-cli -datadir=/home/bitcoin/.bitcoin getblockchaininfo | jq -r '.chain')"
    if [ -n $chain ]; then
    @@ -146,7 +146,7 @@ ${color_yellow} / ./ ${color_gray}SSD ${color_sd}%-16s${co
    ${color_yellow} / ./ ${color_gray}HDD ${color_hdd}%-16s${color_gray}Public ${public_color}%-14s
    ${color_yellow} / ./ ${color_gray}Bandwith ▲ %-12s %s
    ${color_yellow} / / ${color_gray} ▼ %-12s Mempool ${mempool} tx
    ${color_yellow} /. %s
    ${color_yellow} /. %s
    %s %s
    " \
    "Thundroid" \
  4. Stadicus created this gist Mar 3, 2018.
    163 changes: 163 additions & 0 deletions 20-thundroid-welcome
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,163 @@
    #!/bin/sh
    # by Stadicus
    # make executable and copy script to /etc/update-motd.d/
    # root must be able to execute bitcoin-cli and lncli

    # set colors
    color_red='\033[0;31m'
    color_green='\033[0;32m'
    color_yellow='\033[0;33m'
    color_gray='\033[0;37m'

    # set datadir
    bitcoin_dir="/home/bitcoin/.bitcoin"
    lnd_dir="/home/bitcoin/.lnd"

    # get uptime & load
    load=$(w | grep "load average:" | cut -c11-)

    # get memory
    ram_avail=$(free -m | grep Mem | awk '{ print $7 }')
    ram=$(printf "%sM / %sM" "${ram_avail}" "$(free -m | grep Mem | awk '{ print $2 }')")

    if [ ${ram_avail} -lt 100 ]; then
    color_ram="${color_red}\e[7m"
    else
    color_ram=${color_green}
    fi

    # get storage
    sd_free_ratio=$(printf "%d" "$(df -h | grep "/$" | awk '{ print $4/$2*100 }')") 2>null
    sd=$(printf "%s (%s%%)" "$(df -h | grep '/$' | awk '{ print $4 }')" "${sd_free_ratio}")
    if [ ${sd_free_ratio} -lt 10 ]; then
    color_sd="${color_red}"
    else
    color_sd=${color_green}
    fi

    hdd_free_ratio=$(printf "%d" "$(df -h | grep '/mnt/hdd$' | awk '{ print $4/$2*100 }')") 2>null
    hdd=$(printf "%s (%s%%)" "$(df -h | grep '/mnt/hdd$' | awk '{ print $4 }')" "${hdd_free_ratio}")

    if [ ${hdd_free_ratio} -lt 10 ]; then
    color_hdd="${color_red}\e[7m"
    else
    color_hdd=${color_green}
    fi

    # get network traffic
    network_rx=$(ifconfig eth0 | grep 'RX bytes' | awk '{ print $3$4 }' | sed 's/[()]//g')
    network_tx=$(ifconfig eth0 | grep 'TX bytes' | awk '{ print $7$8 }' | sed 's/[()]//g')

    # Bitcoin blockchain
    btc_path=$(command -v bitcoin-cli)
    if [ -n ${btc_path} ]; then
    btc_title=" itcoin"

    chain="$(bitcoin-cli -datadir=/home/bitcoin/.bitcoin getblockchaininfo | jq -r '.chain')"
    if [ -n $chain ]; then
    btc_title="${btc_title} (${chain}net)"

    # get sync status
    block_chain="$(bitcoin-cli -datadir=${bitcoin_dir} getblockcount)"
    block_verified="$(bitcoin-cli -datadir=${bitcoin_dir} getblockchaininfo | jq -r '.blocks')"
    block_diff=$(expr ${block_chain} - ${block_verified})

    progress="$(bitcoin-cli -datadir=${bitcoin_dir} getblockchaininfo | jq -r '.verificationprogress')"
    sync_percentage=$(printf "%.2f%%" "$(echo $progress | awk '{print 100 * $1}')")

    if [ ${block_diff} -eq 0 ]; then # fully synced
    sync="OK"
    sync_color="${color_green}"
    sync_behind=" "
    elif [ ${block_diff} -eq 1 ]; then # fully synced
    sync="OK"
    sync_color="${color_green}"
    sync_behind="1 block behind"
    elif [ ${block_diff} -le 10 ]; then # <= 2 blocks behind
    sync="Catching up"
    sync_color="${color_red}"
    sync_behind="${block_diff} blocks behind"
    else
    sync="In progress"
    sync_color="${color_red}"
    sync_behind="${sync_percentage}"
    fi

    # get last known block
    last_block="$(bitcoin-cli -datadir=${bitcoin_dir} getblockcount)"
    if [ ! -z "${last_block}" ]; then
    btc_line2="${btc_line2} ${color_gray}(block ${last_block})"
    fi

    # get mem pool transactions
    mempool="$(bitcoin-cli -datadir=${bitcoin_dir} getmempoolinfo | jq -r '.size')"

    else
    btc_line2="${color_red}NOT RUNNING\t\t"
    fi
    fi

    # get public IP address & port
    public_ip=$(curl -s ipinfo.io/ip)
    public_port=$(cat ${bitcoin_dir}/bitcoin.conf 2>null | grep port= | awk -F"=" '{print $2}')
    if [ "${public_port}" = "" ]; then
    if [ $chain = "test" ]; then
    public_port=18333
    else
    public_port=8333
    fi
    fi

    public_check=$(curl -s https://bitnodes.earn.com/api/v1/nodes/me-${public_port}/ | jq .success)

    if [ $public_check = "true" ]; then
    public="Yes"
    public_color="${color_green}"
    else
    public="Not reachable"
    public_color="${color_red}"
    fi
    public_addr="${public_ip}:${public_port}"

    # get lightning info

    # Eclair
    #ln_alias="$(/home/bitcoin/bin/eclair-cli getinfo | jq -r '.alias')" 2>null
    #ln_port="$(/home/bitcoin/bin/eclair-cli getinfo | jq -r '.port')"
    #ln_peers_total="$(/home/bitcoin/bin/eclair-cli peers | jq '. | length')"
    #ln_peers_online="$(/home/bitcoin/bin/eclair-cli peers | jq '[.[] | select(.state=="CONNECTED")] | length')"
    #ln_channels_total="$(/home/bitcoin/bin/eclair-cli channels | jq '. | length')"
    #ln_channels_online="$(/home/bitcoin/bin/eclair-cli channels | jq '[.[] | select(.state=="NORMAL")] | length')"

    # LND
    ln_alias="$(/usr/local/bin/lncli --macaroonpath=${lnd_dir}/readonly.macaroon getinfo | jq -r '.alias')" 2>null
    ln_channels_online="$(/usr/local/bin/lncli --macaroonpath=${lnd_dir}/readonly.macaroon getinfo | jq -r '.num_active_channels')"
    ln_channels_total="$(/usr/local/bin/lncli --macaroonpath=${lnd_dir}/readonly.macaroon listchannels | jq '.[] | length')"

    printf "
    ${color_yellow} ___________
    ${color_yellow} / ./ %s: ${color_gray}Bitcoin Core & Lightning
    ${color_yellow} / ./ %s
    ${color_yellow} / ./ ${color_gray}%s
    ${color_yellow} / ./___
    ${color_yellow} /____ ./ %-24s %-24s %-20s
    ${color_yellow} / ./ ${color_gray}Memory ${color_ram}%-16s${color_gray}Sync ${sync_color}%-14s${color_gray} %s
    ${color_yellow} / ./ ${color_gray}SSD ${color_sd}%-16s${color_gray} %-14s %s / %s Channels online
    ${color_yellow} / ./ ${color_gray}HDD ${color_hdd}%-16s${color_gray}Public ${public_color}%-14s
    ${color_yellow} / ./ ${color_gray}Bandwith ▲ %-12s %s
    ${color_yellow} / / ${color_gray} ▼ %-12s Mempool ${mempool} tx
    ${color_yellow} /. %s
    %s %s
    " \
    "Thundroid" \
    "-----------------------------------------------------------------------" \
    "${load}" \
    "Ressources free" "${btc_title}" "Lightning (LND)" \
    "${ram}" "${sync}" "${ln_alias}" \
    "${sd}" "${sync_behind}" "${ln_channels_online}" "${ln_channels_total}" \
    "${hdd}" "${public}" \
    "${network_tx}" "${public_addr}" \
    "${network_rx}" \
    "-----------------------------------------------------------------------"

    echo "$(tput -T xterm sgr0)"