mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-03-09 15:40:18 +00:00
Initial main commit
This commit is contained in:
parent
802cbecb3c
commit
b831b7cb97
104 changed files with 62749 additions and 1 deletions
153
agents/meshinstall-linux.sh
Normal file
153
agents/meshinstall-linux.sh
Normal file
|
@ -0,0 +1,153 @@
|
|||
#!/bin/bash
|
||||
|
||||
CheckStartupType() {
|
||||
# echo "Checking process autostart system..."
|
||||
if [[ `systemctl` =~ -\.mount ]]; then return 1; # systemd;
|
||||
elif [[ `/sbin/init --version` =~ upstart ]]; then return 2; # upstart;
|
||||
elif [[ -f /etc/init.d/cron && ! -h /etc/init.d/cron ]]; then return 3; # sysv-init;
|
||||
fi
|
||||
return 0;
|
||||
}
|
||||
|
||||
CheckInstallAgent() {
|
||||
# echo "Checking mesh identifier..."
|
||||
if [ -e "/usr/local" ]
|
||||
then
|
||||
installpath="/usr/local/mesh"
|
||||
else
|
||||
installpath="/usr/mesh"
|
||||
fi
|
||||
if [ $# -eq 2 ]
|
||||
then
|
||||
url=$1
|
||||
meshid=$2
|
||||
meshidlen=${#meshid}
|
||||
if [ $meshidlen -eq 64 ]
|
||||
then
|
||||
# echo "Detecting computer type..."
|
||||
machinetype=$( uname -m )
|
||||
machineid=0
|
||||
if [ $machinetype == 'x86_64' ]
|
||||
then
|
||||
# Linux x86, 64 bit
|
||||
machineid=6
|
||||
fi
|
||||
if [ $machinetype == 'x86' ]
|
||||
then
|
||||
# Linux x86, 32 bit
|
||||
machineid=5
|
||||
fi
|
||||
if [ $machinetype == 'armv7l' ]
|
||||
then
|
||||
# Raspberry Pi 2 or Raspberry Pi 3
|
||||
machineid=25
|
||||
fi
|
||||
# TODO: Add more machine types, detect KVM support, etc.
|
||||
if [ $machineid -eq 0 ]
|
||||
then
|
||||
echo "Unsupported machine type: $machinetype, check with server administrator."
|
||||
else
|
||||
DownloadAgent $url $meshid $machineid
|
||||
fi
|
||||
else
|
||||
echo "MeshID is not correct, must be 64 HEX characters long."
|
||||
fi
|
||||
else
|
||||
echo "URI and/or MeshID have not been specified, must be passed in as arguments."
|
||||
return 0;
|
||||
fi
|
||||
}
|
||||
|
||||
DownloadAgent() {
|
||||
url=$1
|
||||
meshid=$2
|
||||
machineid=$3
|
||||
# Create folder
|
||||
mkdir -p /usr/local/mesh
|
||||
cd /usr/local/mesh
|
||||
# echo "Downloading mesh agent..."
|
||||
wget $url/meshagents?id=$machineid -q --no-check-certificate -O /usr/local/mesh/meshagent
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
echo "Mesh agent download."
|
||||
# TODO: Check meshagent sha256 hash
|
||||
chmod 755 /usr/local/mesh/meshagent
|
||||
wget $url/meshsettings?id=$meshid -q --no-check-certificate -O /usr/local/mesh/meshagent.msh
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
if [ $starttype -eq 1 ]
|
||||
then
|
||||
echo -e "[Unit]\nDescription=MeshCentral Agent\n[Service]\nExecStart=/usr/local/mesh/meshagent\nStandardOutput=null\n[Install]\nWantedBy=multi-user.target\nAlias=meshcentral.service\n" > /lib/systemd/system/meshcentral.service
|
||||
systemctl enable meshcentral
|
||||
systemctl start meshcentral
|
||||
else
|
||||
./meshagent start
|
||||
ln -s /usr/local/mesh/meshagent /sbin/meshcmd
|
||||
ln -s /usr/local/mesh/meshagent /etc/rc2.d/S20mesh
|
||||
ln -s /usr/local/mesh/meshagent /etc/rc3.d/S20mesh
|
||||
ln -s /usr/local/mesh/meshagent /etc/rc5.d/S20mesh
|
||||
fi
|
||||
else
|
||||
echo "Unable to download mesh settings at: $url/meshsettings?id=$meshid."
|
||||
fi
|
||||
else
|
||||
echo "Unable to download mesh agent at: $url/meshagents?id=$machineid."
|
||||
fi
|
||||
}
|
||||
|
||||
UninstallAgent() {
|
||||
# Uninstall agent
|
||||
if [ -e "/usr/local" ]
|
||||
then
|
||||
installpath="/usr/local/mesh"
|
||||
else
|
||||
installpath="/usr/mesh"
|
||||
fi
|
||||
|
||||
if [ $starttype -eq 1 ]
|
||||
then
|
||||
rm -f /sbin/meshcmd /lib/systemd/system/meshcentral.service
|
||||
systemctl disable meshcentral
|
||||
systemctl stop meshcentral
|
||||
else
|
||||
rm -f /sbin/meshcmd /etc/rc2.d/S20mesh /etc/rc3.d/S20mesh /etc/rc5.d/S20mesh
|
||||
fi
|
||||
|
||||
if [ -e $installpath ]
|
||||
then
|
||||
cd $installpath
|
||||
if [ -e "$installpath/meshagent" ]
|
||||
then
|
||||
./meshagent stop
|
||||
fi
|
||||
rm -rf $installpath/*
|
||||
rmdir $installpath
|
||||
fi
|
||||
echo "Agent uninstalled."
|
||||
}
|
||||
|
||||
|
||||
CheckStartupType
|
||||
starttype=$?
|
||||
#echo "Type: $starttype"
|
||||
|
||||
currentuser=$( whoami )
|
||||
if [ $currentuser == 'root' ]
|
||||
then
|
||||
if [ $# -eq 0 ]
|
||||
then
|
||||
echo -e "This script will install or uninstall a mesh agent, usage:\n $0 [serverurl] [meshid]\n $0 uninstall"
|
||||
else
|
||||
if [ $# -eq 1 ]
|
||||
then
|
||||
if [ $1 == 'uninstall' ] || [ $1 == 'UNINSTALL' ]
|
||||
then
|
||||
UninstallAgent
|
||||
fi
|
||||
else
|
||||
CheckInstallAgent $1 $2
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "Must be root to install or uninstall mesh agent."
|
||||
fi
|
Loading…
Add table
Add a link
Reference in a new issue