From cd5be9c4cdd6a7bd0f236707a6b5b20352fd98cc Mon Sep 17 00:00:00 2001 From: Justin-p <justin-p@users.noreply.github.com> Date: Wed, 2 Oct 2019 10:14:26 +0200 Subject: [PATCH] Add /boot. Redo help. Replaced --commit/--branch with --version. Added --url to easly switch to other fork for testing --- scripts/update_pwnagotchi.sh | 93 +++++++++++++++++++----------------- 1 file changed, 49 insertions(+), 44 deletions(-) diff --git a/scripts/update_pwnagotchi.sh b/scripts/update_pwnagotchi.sh index c5cb757..6010721 100644 --- a/scripts/update_pwnagotchi.sh +++ b/scripts/update_pwnagotchi.sh @@ -1,77 +1,82 @@ #!/bin/bash # Default variables -folder="/tmp/pwnagotchi" +git_folder="/tmp/pwnagotchi" +git_url="https://github.com/evilsocket/pwnagotchi/" version="master" -commit=0 backupconfig=0 restoreconfig=0 -# functions -function display_help { - echo "Usage: $0 [-m | --master] [-c | --commit | --branch] [-bc | --backupconfig] [-rc | --restoreconfig] [-h | --help]" >&2 - echo - echo " -m, --master Update to the master branch. Used by default." - echo " -c, --commit, --branch Update to the specific commit/branch." - echo " -bc, --backupconfig Backup the current pwnagotchi config." - echo " -rc, --restoreconfig Restore the current pwnagotchi config. -bc will be enabled." - echo " -h, --help Shows this help." - echo "" - echo - exit 1 +# Functions +function usage() { + cat <<EOF + + usage: $0 [OPTIONS] + + Options: + -v, --version # Version to update to, can be a branch or commit. (default: master) + -u, --url # Url to clone from. (default: https://github.com/evilsocket/pwnagotchi) + -bc, --backupconfig # Backup the current pwnagotchi config. + -rc, --restoreconfig # Restore the current pwnagotchi config. -bc will be enabled. + -h, --help # Shows this help. + +EOF + exit 0 } -function test_root { -# Check if we are running as root. + +function test_root() { if ! [ $(id -u) = 0 ]; then - echo " [!] This script must be run as root." - exit 3 + echo "[!] This script must be run as root." + exit 1 fi } -function test_github { - wget -q --spider https://github.com/evilsocket/pwnagotchi/ + +function test_github() { + wget -q --spider $git_url if [ $? -ne 0 ]; then - echo " [!] Cannot reach github. This script requires internet access, ensure connection sharing is working." - exit 4 + echo "[!] Cannot reach github. This script requires internet access, ensure connection sharing is working." + exit 2 fi } # Commandline arguments while [[ "$#" -gt 0 ]]; do case $1 in - -m|--master) version="master"; shift;; - -c|--commit|---branch) commit="$2" version="other"; shift;; + -v|--version) version="$2"; shift;; + -u|--url) git_url="$2"; shift;; -bc|--backupconfig) backupconfig=1; shift;; -rc|--restoreconfig) backupconfig=1 restoreconfig=1; shift;; - -h|--help) display_help;; - *) echo "Unknown parameter passed: $1"; exit 2;; + -h|--help) usage;; + *) echo "Unknown parameter passed: $1"; exit 3;; esac; shift; done -echo " [+] Checking prerequisites." +echo "[+] Checking prerequisites." test_root test_github # clean up old files, clone master, set checkout to commit if needed. -echo " [+] Cloning to $folder..." -rm $folder -rf -git clone https://github.com/evilsocket/pwnagotchi $folder -q -cd $folder -if [ $version == "other" ]; then - git checkout $commit -q +echo "[+] Cloning to $git_folder..." +rm $git_folder -rf +git clone $git_url $git_folder -q +cd $git_folder +if [ $version != "master" ]; then + git checkout $version -q fi -echo " [+] Installing $(git log -1 --format="%h")" +echo "[+] Installing $(git log -1 --format="%h")" -echo " [+] Updating..." +echo "[+] Updating..." if [ $backupconfig -eq 1 ]; then - echo " [+] Creating backup of config.yml" - mv /root/pwnagotchi/config.yml ~/config.yml.bak -f + echo "[+] Creating backup of config.yml" + mv /root/pwnagotchi/config.yml /root/config.yml.bak -f fi -rm /root/pwnagotchi -rf -rsync -aPq $folder/sdcard/rootfs/* / +rm /root/pwnagotchi -rf # ensures old files are removed +rsync -aPq $git_folder/sdcard/boot/* /boot/ +rsync -aPq $git_folder/sdcard/rootfs/* / cd /tmp -rm $folder -rf +rm $git_folder -rf if [ $restoreconfig -eq 1 ]; then - echo " [+] Restoring backup of config.yml" - mv ~/config.yml.bak /root/pwnagotchi/config.yml -f + echo "[+] Restoring backup of config.yml" + mv /root/config.yml.bak /root/pwnagotchi/config.yml -f fi -echo " [+] Restarting pwnagotchi in auto mode. $( screen -X -S pwnagotchi quit)" +echo "[+] Restarting pwnagotchi in auto mode. $( screen -X -S pwnagotchi quit)" sudo -H -u root /usr/bin/screen -dmS pwnagotchi -c /root/pwnagotchi/data/screenrc.auto -echo " [+] Finished" \ No newline at end of file +echo "[+] Finished" \ No newline at end of file