From f76fa53ae527c71b478812febc864e95a292ea8d Mon Sep 17 00:00:00 2001 From: Danny de Kooker Date: Wed, 6 Sep 2023 11:41:14 +0200 Subject: [PATCH] Add Supporting_scripts/Linux - Update TRMM agent.sh --- .../Linux - Update TRMM agent.sh | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 Supporting_scripts/Linux - Update TRMM agent.sh diff --git a/Supporting_scripts/Linux - Update TRMM agent.sh b/Supporting_scripts/Linux - Update TRMM agent.sh new file mode 100644 index 0000000..8b331f7 --- /dev/null +++ b/Supporting_scripts/Linux - Update TRMM agent.sh @@ -0,0 +1,147 @@ +#!/bin/bash +#Source: https://github.com/netvolt/LinuxRMM-Script/blob/main/rmmagent-linux.sh + +check_zip=$(which unzip 2> /dev/null) +if [[ $check_zip == "" || $check_zip =~ .*"no unzip".* ]]; then + echo "unzip could not be found. Trying to install automatically." + if [[ `which yum` ]]; then + yum -y install unzip + echo "Unzip installed. Continue script..." + elif [[ `which apt` ]]; then + apt-get -y update + apt-get -y install unzip + echo "Unzip installed. Continue script..." + else + echo "unzip could not be installed. Please install unzip manually." + fi + exit 1 +fi + +if [[ $1 == "" ]]; then + echo "First argument is empty !" + echo "Type help for more information" + exit 1 +fi + +if [[ $1 == "help" ]]; then + echo "There is help but more information is available at github.com/ZoLuSs/rmmagent-script" + echo "" + echo "List of UPDATE argument (no argument name)" + echo "Arg 1: 'update'" + echo "Arg 2: System type 'amd64' 'x86' 'arm64' 'armv6'" + echo "" + echo "" + exit 0 +fi + +if [[ $1 != "update" ]]; then + echo "First argument can only be 'update' !" + echo "Type help for more information" + exit 1 +fi + +if [[ $1 == "update" && $2 == "" ]]; then + echo "Argument 2 (System type) is empty !" + echo "Type help for more information" + exit 1 +fi + +## Setting var for easy scription +system=$2 + +go_url_amd64="https://go.dev/dl/go1.18.3.linux-amd64.tar.gz" +go_url_x86="https://go.dev/dl/go1.18.3.linux-386.tar.gz" +go_url_arm64="https://go.dev/dl/go1.18.3.linux-arm64.tar.gz" +go_url_armv6="https://go.dev/dl/go1.18.3.linux-armv6l.tar.gz" + +function check_profile () { + source /etc/environment + profile_file="/root/.profile" + path_count=$(cat $profile_file | grep -o "export PATH=/usr/local/go/bin" | wc -l) + if [[ $path_count -ne 0 ]]; then + echo "Removing incorrect \$PATH variable\(s\)" + sed -i "/export\ PATH\=\/usr\/local\/go\/bin/d" $profile_file + fi + + path_count=$(cat $profile_file | grep -o "export PATH=\$PATH:/usr/local/go/bin" | wc -l) + if [[ $path_count -ne 1 ]]; then + echo "Fixing \$PATH Variable" + sed -i "/export\ PATH\=\$PATH\:\/usr\/local\/go\/bin/d" $profile_file + echo "export PATH=\$PATH:/usr/local/go/bin" >> $profile_file + fi + source $profile_file +} + +function go_install() { + if ! command -v go &> /dev/null; then + ## Installing golang + case $system in + amd64) + wget -O /tmp/golang.tar.gz $go_url_amd64 + ;; + x86) + wget -O /tmp/golang.tar.gz $go_url_x86 + ;; + arm64) + wget -O /tmp/golang.tar.gz $go_url_arm64 + ;; + armv6) + wget -O /tmp/golang.tar.gz $go_url_armv6 + ;; + esac + + tar -xvzf /tmp/golang.tar.gz -C /usr/local/ + rm /tmp/golang.tar.gz + export GOPATH=/usr/local/go + export GOCACHE=/root/.cache/go-build + + echo "Golang Install Done !" + else + echo "Go is already installed" + fi +} + +function agent_compile() { + ## Compiling and installing tactical agent from github + echo "Agent Compile begin" + wget -O /tmp/rmmagent.zip "https://github.com/amidaware/rmmagent/archive/refs/heads/master.zip" + unzip /tmp/rmmagent -d /tmp/ + rm /tmp/rmmagent.zip + cd /tmp/rmmagent-master + case $system in + amd64) + env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o /tmp/temp_rmmagent + ;; + x86) + env CGO_ENABLED=0 GOOS=linux GOARCH=386 go build -ldflags "-s -w" -o /tmp/temp_rmmagent + ;; + arm64) + env CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "-s -w" -o /tmp/temp_rmmagent + ;; + armv6) + env CGO_ENABLED=0 GOOS=linux GOARCH=arm go build -ldflags "-s -w" -o /tmp/temp_rmmagent + ;; + esac + + cd /tmp + rm -R /tmp/rmmagent-master +} + +function update_agent() { + systemctl stop tacticalagent + + cp /tmp/temp_rmmagent /usr/local/bin/tacticalagent + rm /tmp/temp_rmmagent + + systemctl start tacticalagent +} + +case $1 in +update) + check_profile + go_install + agent_compile + update_agent + echo "Tactical Agent Update is done" + exit 0;; +esac \ No newline at end of file