diff --git a/home.admin/80scanLND.old.sh b/home.admin/80scanLND.old.sh new file mode 100755 index 0000000..75e4bc1 --- /dev/null +++ b/home.admin/80scanLND.old.sh @@ -0,0 +1,101 @@ +#!/bin/bash + +source /home/admin/raspiblitz.info +source /mnt/hdd/raspiblitz.conf + +### USER PI AUTOSTART (LCD Display) +localip=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/') + +# parse the actual scanned height progress from LND logs +item=0 +blockchaininfo=$(sudo -u bitcoin ${network}-cli -datadir=/home/bitcoin/.${network} getblockchaininfo) +chain="$(echo "${blockchaininfo}" | jq -r '.chain')" + +## TRY to get the actual progress height of scanning + +# 1) First try the "Rescanned through block" - it seems to happen if it restarts +item=$(sudo -u bitcoin tail -n 100 /mnt/hdd/lnd/logs/${network}/${chain}net/lnd.log | grep "Rescanned through block" | tail -n1 | cut -d ']' -f2 | cut -d '(' -f2 | tr -dc '0-9') +action="Rescanning" + +# 2) Second try the "Caught up to height" - thats the usual on first scan start +if [ ${#item} -eq 0 ]; then + item=$(sudo -u bitcoin tail -n 100 /mnt/hdd/lnd/logs/${network}/${chain}net/lnd.log | grep "Caught up to height" | tail -n1 | cut -d ']' -f2 | tr -dc '0-9') + action="Catching-Up" +fi + +# 3) Third try the "LNWL: Filtering block" - thats the usual on later starts +if [ ${#item} -eq 0 ]; then + item=$(sudo -u bitcoin tail -n 100 /mnt/hdd/lnd/logs/${network}/${chain}net/lnd.log | grep "LNWL: Filtering block" | tail -n1 | cut -d ' ' -f7 | tr -dc '0-9') + action="Filtering" +fi + +# if no progress info +online=1 +if [ ${#item} -eq 0 ]; then + item="?" + + # check if offline + online=$(ping 1.0.0.1 -c 1 -W 2 | grep -c '1 received') + if [ ${online} -eq 0 ]; then + # re-test with other server + online=$(ping 8.8.8.8 -c 1 -W 2 | grep -c '1 received') + fi + if [ ${online} -eq 0 ]; then + # re-test with other server + online=$(ping 208.67.222.222 -c 1 -W 2 | grep -c '1 received') + fi + +fi + +# get total number of blocks +total=$(echo "${blockchaininfo}" | jq -r '.blocks') +# put scanstate +scanstate="${item}/${total}" + +# get blockchain sync progress +progress="$(echo "${blockchaininfo}" | jq -r '.verificationprogress')" +#progress=$(echo "${progress}*100" | bc) +progress=$(echo $progress | awk '{printf( "%.2f%%", 100 * $1)}') + +# check if blockchain is still syncing +heigh=6 +width=44 +isInitialChainSync=$(echo "${blockchaininfo}" | grep 'initialblockdownload' | grep "true" -c) +isWaitingBlockchain=$( sudo -u bitcoin tail -n 2 /mnt/hdd/lnd/logs/${network}/${chain}net/lnd.log | grep "Waiting for chain backend to finish sync" -c ) +if [ ${isWaitingBlockchain} -gt 0 ]; then + isInitialChainSync=1 +fi +if [ ${online} -eq 0 ]; then + heigh=7 + width=44 + infoStr=$(echo " Waiting INTERNET CONNECTION\n RaspiBlitz cannot ping 1.0.0.1\n Local IP is ${localip}\n Please check cables and router.") +elif [ ${isInitialChainSync} -gt 0 ]; then + heigh=7 + infoStr=" Waiting for final Blockchain Sync\n Progress: ${progress} \n Please wait - this can take some time.\n ssh admin@${localip}\n Password A" + if [ "$USER" = "admin" ]; then + heigh=6 + width=53 + infoStr=$(echo " Waiting for final Blockchain Sync\n Progress: ${progress} %\n Please wait - this can take some long time.\n Its OK to close terminal and ssh back in later.") + fi +else + heigh=7 + # check if wallet has any UTXO + # reason see: https://github.com/lightningnetwork/lnd/issues/2326 + txlines=$(sudo -u bitcoin lncli listchaintxns 2>/dev/null | wc -l) + # has just 4 lines if empty + if [ ${txlines} -eq 4 ]; then + infoStr=$(echo " Lightning ${action} Blockchain\n Progress: ${scanstate}\n re-rescan every start until funding\n ssh admin@${localip}\n Password A") + else + infoStr=$(echo " Lightning ${action} Blockchain\n Progress: ${scanstate}\n Please wait - this can take some time\n ssh admin@${localip}\n Password A") + if [ "$USER" = "admin" ]; then + heigh=6 + width=53 + infoStr=$(echo " Lightning ${action} Blockchain\n Progress: ${scanstate}\n Please wait - this can take some long time.\n Its OK to close terminal and ssh back in later.") + fi + fi +fi + +# display progress to user +sleep 3 +temp=$(echo "scale=1; $(cat /sys/class/thermal/thermal_zone0/temp)/1000" | bc) +dialog --title " ${network} / ${chain} " --backtitle "RaspiBlitz (${hostname}) CPU: ${temp}°C" --infobox "${infoStr}" ${heigh} ${width} \ No newline at end of file diff --git a/home.admin/config.scripts/blitz.statusscan.sh b/home.admin/config.scripts/blitz.statusscan.sh new file mode 100644 index 0000000..d99fefb --- /dev/null +++ b/home.admin/config.scripts/blitz.statusscan.sh @@ -0,0 +1,105 @@ +#!/bin/bash + +source /home/admin/raspiblitz.info +source /mnt/hdd/raspiblitz.conf + +# command info +if [ "$1" = "-h" ] || [ "$1" = "-help" ]; then + echo "# script to scan the state of the system after setup" + exit 1 +fi + +# measure time of scan +startTime=$(date +%s) + +# localIP +localip=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/') +echo "localIP='${localip}'" + +# is bitcoind running +bitcoinRunning=$(systemctl status ${network}d.service 2>/dev/null | grep -c running) +echo "bitcoinActive=${bitcoinRunning}" + +if [ ${bitcoinRunning} -eq 1 ]; then + + # get blockchain info + blockchaininfo=$(sudo -u bitcoin ${network}-cli -datadir=/home/bitcoin/.${network} getblockchaininfo 2>/home/bitcoin/.${network}/.bitcoind.error) + + # check if error on request + bitcoinError=$(sudo -u bitcoin cat /home/bitcoin/.${network}/.bitcoind.error | tr "'" '"' | tr '"' '\"' ) + sudo -u bitcoin rm /home/bitcoin/.${network}/.bitcoind.error + if [ ${#bitcoinError} -gt 0 ]; + echo "bitcoinError='${bitcoinError}'" + else + + ############################## + # Get data from blockchaininfo + ############################## + + # get total number of blocks + total=$(echo ${blockchaininfo} | jq -r '.blocks') + echo "blockchainHeight=${total}" + + # is initial sync of blockchain + initialSync=$(echo ${blockchaininfo} | jq -r '.initialblockdownload' | grep -c 'true') + echo "initialSync=${initialSync}" + + # get blockchain sync progress + syncProgress="$(echo ${blockchaininfo} | jq -r '.verificationprogress')" + syncProgress=$(echo $syncProgress | awk '{printf( "%.2f%%", 100 * $1)}') + echo "syncProgress=${syncProgress}" + + fi +fi + +# is LND running +lndRunning=$(systemctl status lnd.service 2>/dev/null | grep -c running) + +# TODO: check how long running ... try to find out if problem on starting + +echo "lndActive=${lndRunning}" + +if [ ${lndRunning} -eq 1 ]; then + + # get LND info + lndinfo=$(sudo -u bitcoin lncli getinfo 2>/home/bitcoin/.lnd/.lnd.error) + + # check if error on request + lndError=$(sudo -u bitcoin cat /home/bitcoin/.lnd/.lnd.error | tr "'" '"' | tr '"' '\"' ) + sudo -u bitcoin rm /home/bitcoin/.lnd/.lnd.error + if [ ${#lndError} -gt 0 ]; + echo "lndError='${lndError}'" + else + + # synced to chain + syncedToChain=$(echo ${lndinfo} | jq -r '.synced_to_chain' | grep -c 'true') + echo "syncedToChain=${syncedToChain}" + + # lnd scan progress + lndTimestamp=$(echo ${lndinfo} | jq -r '.best_header_timestamp') + echo "lndTimestamp=${lndTimestamp}" + lndDate=$(date -d @${lndTimestamp}) + echo "lndDate=${lndDate}" + + # calculate LND scan progress by seconds since Genesisblock + genesisTimestamp=1230940800 + nowTimestamp=$(date +%s) + totalSeconds=$(echo "${nowTimestamp}-${genesisTimestamp}" | bc) + echo "# totalSeconds($totalSeconds)" + scannedSeconds=$(echo "${lndTimestamp}-${genesisTimestamp}" | bc) + echo "# scannedSeconds($scannedSeconds)" + scanProgress=$(echo "scale=2; $scannedSeconds*100/$totalSeconds" | bc) + echo "scanProgress=${scanProgress}" + + fi + +fi + +# check if online if problem with other stuff + +# info on scan run time +endTime=$(date +%s) +runTime=$(echo "${endTime}-${startTime}" | bc) +echo "scantime=${runTime}" + +