Skip to content

Instantly share code, notes, and snippets.

@ninazu
Forked from chaeplin/12-1-install-update.sh
Last active September 21, 2018 11:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ninazu/c9fba7a415b562fdd1222e609cfd83b4 to your computer and use it in GitHub Desktop.
Save ninazu/c9fba7a415b562fdd1222e609cfd83b4 to your computer and use it in GitHub Desktop.
12-1-install-update.sh
#!/bin/sh
PLATFORM="x86_64-linux-gnu"
DASH_PATH=~/.dashcore
SENTINEL_PATH=~/sentinel
#########################
USAGE="DASH MasterNode AutoUpdate Script
$(basename "$0") [\033[33m-p\033[0m linux64|linux32|RPi2] [\033[33m-d\033[0m PATH] [\033[33m-q\033[0m] [\033[33m-h\033[0m]
Where:
\033[33m-p\033[0m platform (default: linux64)
\033[33m-d\033[0m DASH binary path (default: ~/.dash)
\033[33m-q\033[0m quiet
\033[33m-h\033[0m show this help text
Tip:
You can add this script to the cronjob. For automatically update and run MasterNode on startup
Example for Raspberry Pi:
\033[33m@reboot /home/pi/12-1-install-update.sh -p RPi2 -d /home/pi/.dashcore -q\033[0m
"
while getopts :hp:q:d: opts; do
case ${opts} in
p) PLATFORM=${OPTARG} ;;
q) QUIET=${OPTARG} ;;
d) DASH_PATH=${OPTARG} ;;
h) echo "$USAGE"
exit
;;
esac
done
#Fix GREP_OPTIONS for runtime
unset GREP_OPTIONS
quit() {
echo $1
./dashd > /dev/null 2>&1 &
exit
}
checkPackage() {
PKG_OK=$(dpkg-query -W --showformat='${Status}\n' "$1"| grep "install ok installed")
if [ -z "$PKG_OK" ]; then
quit "Missing package: \033[0;31m$1\033[0m"
fi
}
checkPackage jq
checkPackage wget
mkdir -p "$DASH_PATH"
cd "$DASH_PATH"
echo "Platform: \033[33m$PLATFORM\033[0m"
echo "Dash Binary Path: \033[33m$DASH_PATH\033[0m\n"
CONTENT=$(wget https://www.dashninja.pl/dashninja-latestversion.json -q -O -)
DASH_VERSION=$(echo "$CONTENT" | jq -M -r '.version.string')
SENTINEL_VERSION=$(echo "$CONTENT" | jq -M -r '.sentinelversion.string')
MY_SENTINEL_VERSION=$(cat "$SENTINEL_PATH/lib/config.py" | grep --only-matching --perl-regex "(?<=sentinel_version\s\=\s).*" | sed -e 's/^"//' -e 's/"$//')
if [ -z "$DASH_VERSION" ]; then
quit "\033[0;31mCan't get last version\033[0m"
fi
if [ -f ./dash-cli ]; then
YOUR_RAW_VERSION=$(./dash-cli getinfo 2>/dev/null | jq -M -r '.version')
YOUR_VERSION="0"
for c in 1 3 5; do
PART=$(echo "$YOUR_RAW_VERSION" | cut -c $((c))-$((c+1)))
PART=$((PART+0))
YOUR_VERSION="$YOUR_VERSION.$PART"
done
fi
echo "Your sentinel version: \033[33m$MY_SENTINEL_VERSION\033[0m"
echo "Last sentinel version: \033[33m$SENTINEL_VERSION\033[0m\n"
echo "Your DASH version: \033[33m$YOUR_VERSION\033[0m"
if [ "$YOUR_VERSION" = "$DASH_VERSION" ]; then
quit "Last DASH version: \033[33m$DASH_VERSION\033[0m"
fi
echo "New DASH version available: \033[33m$DASH_VERSION\033[0m"
URL="https://www.dash.org/binaries/dashcore-$DASH_VERSION-$PLATFORM.tar.gz"
URL="https://github.com/dashpay/dash/releases/download/v$DASH_VERSION/dashcore-$DASH_VERSION-$PLATFORM.tar.gz"
FILE=${URL##*/}
DIR=${FILE%.tar.gz}
echo "Download: \033[33m$FILE\033[0m"
wget "$URL"
echo "Extract: \033[33m$FILE\033[0m"
TAR_RESULT=$(tar xzvf "$FILE")
EXTRACTED_PATH=$(echo $TAR_RESULT | head -n1 | awk '{print $1;}')
echo $EXTRACTED_PATH
echo $TAR_RESULT
restart(){
echo "\033[0;31mStop\033[0m MasterNode"
./dash-cli stop > /dev/null 2>&1
sleep 15
killall -9 dashd dash-shutoff > /dev/null 2>&1
sleep 1
cd "$SENTINEL_PATH"
git pull
echo "Replace files"
rm dashd dash-cli > /dev/null 2>&1
mv "${EXTRACTED_PATH}bin/dashd" .
mv "${EXTRACTED_PATH}bin/dash-cli" .
chmod 755 dashd dash-cli
echo "Remove temporary files"
rm "$FILE"
rm -rf "$EXTRACTED_PATH"
rm peers.dat debug.log db.log > /dev/null 2>&1
quit "\033[0;31mStart\033[0m MasterNode"
}
if [ -z "$QUIET" ]; then
echo "\033[0;31mMasterNode will be restarted.\033[0m"
while true; do
read -p "Your are sure? (y/N)" answer
case "$answer" in
[Yy]* ) restart; break;;
[Nn]* ) quit;;
* ) echo "\033[0;31mPlease answer \033[33myes \033[0;31mor \033[33mno\033[0m";;
esac
done
else
restart
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment