From 8c13cdcedb0d33cc39bdb05bde3b8d20b4da9800 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 29 Aug 2024 10:31:07 -0700 Subject: [PATCH] check if systemd is running before calling systemd commands Makes installing on redhat containers not error out --- htdocs/install.sh | 60 +++++++++++++++++++++++++++-------------------- install.sh.in | 20 +++++++++++----- 2 files changed, 49 insertions(+), 31 deletions(-) diff --git a/htdocs/install.sh b/htdocs/install.sh index ee1ee0f..2f77d4d 100644 --- a/htdocs/install.sh +++ b/htdocs/install.sh @@ -3,6 +3,7 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 +# shellcheck disable=SC2148 ENDOFSIGSTART= export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin @@ -221,6 +222,7 @@ _new_apt_signing() { echo "deb [signed-by=/usr/share/keyrings/zerotier-debian-package-key.gpg] ${URL}debian/$CODENAME $CODENAME main" >/tmp/zt-sources-list } + # shellcheck disable=SC2072 write_apt_repo() { DISTRIBUTION=$1 VERSION=$2 @@ -235,7 +237,7 @@ write_apt_repo() { $SUDO apt-get install -y gpg $SUDO chmod a+r /tmp/zt-gpg-key - if [[ "$DISTRIBUTION" == "ubuntu" && "$VERSION" < "22.04" ]]; then + if [[ "$DISTRIBUTION" == "ubuntu" && "$VERSION" < "22.04" ]]; then _old_apt_signing $URL $CODENAME elif [[ ("$DISTRIBUTION" == "debian" || "$DISTRIBUTION" == "raspbian") && "$VERSION" -lt "10" ]]; then _old_apt_signing $URL $CODENAME @@ -247,9 +249,9 @@ write_apt_repo() { _new_apt_signing $URL $CODENAME elif [[ "$DISTRIBUTION" == "linuxmint" && "$VERSION" == "6" ]]; then _new_apt_signing $URL $CODENAME - elif [[ "$DISTRIBUTION" == "linuxmint" && ( "$VERSION" == "21" || "$VERSION" > "21" ) ]]; then + elif [[ "$DISTRIBUTION" == "linuxmint" && ( "$VERSION" == "21" || "$VERSION" -gt "21" ) ]]; then _new_apt_signing $URL $CODENAME - elif [[ "$DISTRIBUTION" == "linuxmint" && ( "$VERSION" == "20" || ("$VERSION" > "20" && "$VERSION" < "21" ) ) ]]; then + elif [[ "$DISTRIBUTION" == "linuxmint" && ( "$VERSION" == "20" || ("$VERSION" -gt "20" && "$VERSION" -lt "21" ) ) ]]; then _old_apt_signing $URL $CODENAME else echo "Unsupported distribution $DISTRIBUTION $VERSION" @@ -301,7 +303,7 @@ elif [ $ID == "ubuntu" ] || [ $ID == "pop" ]; then elif [ $ID == "linuxmint" ]; then echo '*** Detected Linux Mint, creating /etc/apt/sources.list.d/zerotier.list' - if [[ "$VERSION_ID" > "$MAX_SUPPORTED_MINT_VERSION" ]]; then + if [[ "$VERSION_ID" -gt "$MAX_SUPPORTED_MINT_VERSION" ]]; then write_apt_repo $ID $MAX_SUPPORTED_MINT_VERSION $ZT_BASE_URL_HTTP $MAX_SUPPORTED_MINT_VERSION_NAME else write_apt_repo $ID $VERSION_ID $ZT_BASE_URL_HTTP ${MINT_CODENAME_MAP[${VERSION_CODENAME}]} @@ -392,14 +394,22 @@ echo echo '*** Enabling and starting ZeroTier service...' if [ -e /usr/bin/systemctl -o -e /usr/sbin/systemctl -o -e /sbin/systemctl -o -e /bin/systemctl ]; then - $SUDO systemctl enable zerotier-one - $SUDO systemctl start zerotier-one - if [ "$?" != "0" ]; then - echo - echo '*** Package installed but cannot start service! You may be in a Docker' - echo '*** container or using a non-standard init service.' + if if [[ -d /run/systemd/system ]]; then + $SUDO systemctl enable zerotier-one + $SUDO systemctl start zerotier-one + if [ "$?" != "0" ]; then + echo + echo '*** Package installed but cannot start service! You may be in a Docker' + echo '*** container or using a non-standard init service.' + echo + exit 1 + fi + else echo - exit 1 + echo '*** Package installed but cannot start service! You may be in a Docker container' + echo '*** or using a non-standard init service.' + + exit 0 fi else if [ -e /sbin/update-rc.d -o -e /usr/sbin/update-rc.d -o -e /bin/update-rc.d -o -e /usr/bin/update-rc.d ]; then @@ -424,18 +434,18 @@ echo exit 0 -----BEGIN PGP SIGNATURE----- -iQJJBAEBCAAzFiEEdKXpxFjhpDHx2lenFlcZiCPlKmEFAmbPc0oVHGNvbnRhY3RA -emVyb3RpZXIuY29tAAoJEBZXGYgj5Sphl7YP/2szwVvzyFS+tQeVNWK8pr3Xjn/B -ZGUeS/LtZ1v3gpciDhVqocwU5wiXYZD/Ou47lgaH2rhnprMVfYRpY/N/kuP3RybE -n6KzEuHimk2aSNlUAilcdH2nhFsrgJKvvXb8KzAuMtjUfdgKBkdOMlYHpsoi7PVn -UCUySaDdaIZVZDhknvN2QksRJ1ABOyGDiLMmFTJ6pM/b7WhyrItIGcmIh4qKriie -WugGbCSxp9fyrUrKtf426hQQXyNelOx1z6xeJ7o/CGDfvuDT1Y+NXcdF78LWxTQF -YU/51Dq5JZcSZ0LRKKjGwXDKbmy10B6iLUqWJlsVb5zndDYwXOyaNHmoVPBKnkip -3O0eatUOasGPrFpDcE1W26AudoU1OCHL4q+lORgkhH0T06HHqpLcwaabAO7OvGU/ -E3VGF9eyKKZYpOIlZ8TcZmMMmqkAZj7pX+vd2nUxw0YKvJYgm7qLhr+SCqvYwuDk -145DhgfjV0nrc5TVyHxGq++n5wTW/ceUa4DmRZlI6fHyvvo7SBD3SfE9PsbOJppY -bdIiVk+vmz35OCwAQXUif+sTS1NMwt4Idmtt3fnRYzbDQDjoxJIUivTTWU+nqGLJ -6qvTy7ggnZ9sT/FJNVtM3PpB2S3qUX7SeKf0qy9s+zlIFgQINzPJXyIaphwk2HLa -NQ1sqHFFmu6KSfFd -=WWIe +iQJJBAEBCAAzFiEEdKXpxFjhpDHx2lenFlcZiCPlKmEFAmbQr/kVHGNvbnRhY3RA +emVyb3RpZXIuY29tAAoJEBZXGYgj5SphEj8QAKcVQPqjySCvK0fvngFXHcaocuvd +G0G1R3R4HDxcJVHoghnwF3V7o2oGISOGW33YAd81L09QxRB4jtnQacgBO9T+f3ic +AXLW5T5EIr4ThtjEgBuSnmuwzLgV6PalDU783JCSE9icAaLoR0EfmeCLtnRZVX+x +0MvUW01Zbagu+vkc30nt1nLpeFnYWo6ya3x7LOD+VK9rJI+YAgG+S139Z1NZy9rR +C7GRQfKgVZhxRVkFjjPmhzMQf92clEMlp2rlB+kaEa4gYaSBHbiMr3Ft5ohnauq4 +7JRrrzbEQadgsXmgtAXeJZAXnKreT2BuqQCAMLp+82C828zmkH2l+csxIVL2bnBJ +/K5YsubI95hf2P+p6WPdIM1bSaf0PfmPL74YdutNvxCX7mHsPS81blHUpTyJpR5P +KKig0fqzdZjddAX1PbyCtTUbPQw6L16kuE9Zpe4AzZ1h+2LNkbNHUvKgGh7ZUEQR +dfgbR6YDiMEPgBGQBcWDTUESx0nPoxrc1e0BUjCx6o730GPlpag3G2EaEXYFYk17 +QM/Y2V1KNCxQXKCsbUTTHV4gE5A6FyoHD218S4JMjfQI17dUHPwci4qkaRI0FXT0 +tCQjwnXxM7yuSW6VhSUA+9JTuVjk2+IU3aYuxIxbULqzlWAgNiyoOw77fvvMERtm +9ccxB0x3PgVZ/6Fo +=0Yp1 -----END PGP SIGNATURE----- diff --git a/install.sh.in b/install.sh.in index fd57d12..782f4d8 100644 --- a/install.sh.in +++ b/install.sh.in @@ -389,14 +389,22 @@ echo echo '*** Enabling and starting ZeroTier service...' if [ -e /usr/bin/systemctl -o -e /usr/sbin/systemctl -o -e /sbin/systemctl -o -e /bin/systemctl ]; then - $SUDO systemctl enable zerotier-one - $SUDO systemctl start zerotier-one - if [ "$?" != "0" ]; then + if [[ -d /run/systemd/system ]]; then + $SUDO systemctl enable zerotier-one + $SUDO systemctl start zerotier-one + if [ "$?" != "0" ]; then + echo + echo '*** Package installed but cannot start service! You may be in a Docker' + echo '*** container or using a non-standard init service.' + echo + exit 1 + fi + else echo - echo '*** Package installed but cannot start service! You may be in a Docker' - echo '*** container or using a non-standard init service.' + echo '*** Package installed but cannot start service! You may be in a Docker container' + echo '*** or using a non-standard init service.' echo - exit 1 + exit 0 fi else if [ -e /sbin/update-rc.d -o -e /usr/sbin/update-rc.d -o -e /bin/update-rc.d -o -e /usr/bin/update-rc.d ]; then