Add rmmagent-linux.sh
This commit is contained in:
parent
09d9a3ace0
commit
98f1a6db6d
1 changed files with 176 additions and 0 deletions
176
rmmagent-linux.sh
Normal file
176
rmmagent-linux.sh
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue