-
-
Save ninazu/c9fba7a415b562fdd1222e609cfd83b4 to your computer and use it in GitHub Desktop.
12-1-install-update.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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