Add rmmagent-linux.sh

This commit is contained in:
edschuy95 2025-09-02 15:48:52 +00:00
parent 09d9a3ace0
commit 98f1a6db6d

176
rmmagent-linux.sh Normal file
View file

@ -0,0 +1,176 @@
#!/bin/bash
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 "INSTALL args:"
echo " 1: 'install'"
echo " 2: Mesh agent URL"
echo " 3: API URL"
echo " 4: Client ID"
echo " 5: Site ID"
echo " 6: Auth Key"
echo " 7: Agent Type ('server' or 'workstation')"
echo ""
echo "UPDATE args:"
echo " 1: 'update'"
echo ""
echo "UNINSTALL args:"
echo " 1: 'uninstall'"
echo " 2: Mesh agent FQDN"
echo " 3: Mesh agent ID (in single quotes)"
echo ""
exit 0
fi
if [[ $1 != "install" && $1 != "update" && $1 != "uninstall" ]]; then
echo "First argument must be 'install', 'update', or 'uninstall'!"
echo "Type help for more information"
exit 1
fi
# Detect architecture
system=$(uname -m)
case $system in
x86_64) system="amd64" ;;
i386|i686) system="x86" ;;
aarch64) system="arm64" ;;
armv6l) system="armv6" ;;
*) echo "Unsupported architecture: $system"; exit 1 ;;
esac
# Variables
mesh_url=$2
rmm_url=$3
rmm_client_id=$4
rmm_site_id=$5
rmm_auth=$6
rmm_agent_type=$7
mesh_fqdn=$2
mesh_id=$3
go_version="1.21.6"
go_url_amd64="https://go.dev/dl/go$go_version.linux-amd64.tar.gz"
go_url_x86="https://go.dev/dl/go$go_version.linux-386.tar.gz"
go_url_arm64="https://go.dev/dl/go$go_version.linux-arm64.tar.gz"
go_url_armv6="https://go.dev/dl/go$go_version.linux-armv6l.tar.gz"
go_install() {
if ! command -v go &> /dev/null; then
case $system in
amd64) url=$go_url_amd64 ;;
x86) url=$go_url_x86 ;;
arm64) url=$go_url_arm64 ;;
armv6) url=$go_url_armv6 ;;
esac
wget -O /tmp/golang.tar.gz "$url"
rm -rf /usr/local/go/
tar -xzf /tmp/golang.tar.gz -C /usr/local/
rm /tmp/golang.tar.gz
export PATH=$PATH:/usr/local/go/bin
echo "Go is installed."
fi
}
agent_compile() {
echo "Agent Compile begin"
wget -O /tmp/rmmagent.tar.gz "https://github.com/amidaware/rmmagent/archive/refs/heads/master.tar.gz"
tar -xf /tmp/rmmagent.tar.gz -C /tmp/
rm /tmp/rmmagent.tar.gz
cd /tmp/rmmagent-master
case $system in
amd64) arch=amd64 ;;
x86) arch=386 ;;
arm64) arch=arm64 ;;
armv6) arch=arm ;;
esac
env CGO_ENABLED=0 GOOS=linux GOARCH=$arch go build -ldflags "-s -w" -o /tmp/temp_rmmagent
cd /
rm -rf /tmp/rmmagent-master
}
install_agent() {
cp /tmp/temp_rmmagent /usr/local/bin/rmmagent
chmod +x /usr/local/bin/rmmagent
/usr/local/bin/rmmagent -m install -api "$rmm_url" -client-id "$rmm_client_id" \
-site-id "$rmm_site_id" -agent-type "$rmm_agent_type" -auth "$rmm_auth"
# Create OpenRC service script
cat << "EOF" > /etc/init.d/tacticalagent
#!/sbin/openrc-run
description="Tactical RMM Linux Agent"
command="/usr/local/bin/rmmagent"
command_args="-m svc"
pidfile="/run/tacticalagent.pid"
command_background="yes"
depend() {
need net
}
start_pre() {
checkpath --directory --owner root --mode 0755 /run
}
EOF
chmod +x /etc/init.d/tacticalagent
rc-update add tacticalagent default
rc-service tacticalagent start
}
install_mesh() {
wget -O /tmp/meshagent "$mesh_url"
chmod +x /tmp/meshagent
mkdir -p /opt/tacticalmesh
/tmp/meshagent -install --installPath="/opt/tacticalmesh"
rm /tmp/meshagent
}
uninstall_agent() {
rc-service tacticalagent stop
rc-update del tacticalagent default
rm /etc/init.d/tacticalagent
rm /usr/local/bin/rmmagent
}
uninstall_mesh() {
wget "https://$mesh_fqdn/meshagents?script=1" -O /tmp/meshinstall.sh \
|| wget "https://$mesh_fqdn/meshagents?script=1" --no-proxy -O /tmp/meshinstall.sh
chmod +x /tmp/meshinstall.sh
/tmp/meshinstall.sh uninstall "https://$mesh_fqdn" "$mesh_id" \
|| /tmp/meshinstall.sh uninstall
rm /tmp/meshinstall.sh
}
case $1 in
install)
go_install
install_mesh
agent_compile
install_agent
echo "Tactical Agent Install is done"
exit 0
;;
update)
go_install
agent_compile
# replace binary
rc-service tacticalagent stop
cp /tmp/temp_rmmagent /usr/local/bin/rmmagent
chmod +x /usr/local/bin/rmmagent
rc-service tacticalagent start
echo "Tactical Agent Update is done"
exit 0
;;
uninstall)
uninstall_agent
uninstall_mesh
echo "Tactical Agent Uninstall is done"
exit 0
;;
esac