#!/bin/bash
# Set default value for parameters
# Change it accoring to your needs. It is the default value used if no --version parameter is used.
version=${version:-2.5.1-1}
# Get named parameters
while [ $# -gt 0 ]; do
if [[ $1 == *"--"* ]]; then
param="${1/--/}"
declare $param="$2"
fi
shift
done
# Welcome message
clear
echo
echo
echo "Welcome to the FusionInventory Agent Installation script"
echo
# Help Needed ?
if [ ! -z ${help+x} ]
then
echo "This script is intended to install the FusionInventory agent on Debian/Ubuntu distribution."
echo "The --version parameter is used to pass the target version in form of 2.5.1-1 or 2.5.1 (if no sub-version exists)."
echo "The --taskcollect parameter is used to specify if the collect task must be instaled. It is $true by default."
echo "The --tasknetwork parameter is used to specify if the network task must be instaled. It is $true by default."
echo "The --taskdeploy parameter is used to specify if the deploy task must be instaled. It is $true by default."
echo "The --taskesx parameter is used to specify if the esx task must be instaled. It is $true by default."
echo "The --agentconfig parameter is used to configure the agent. Use it to adapt the installation to your environment."
echo " All parameters from http://fusioninventory.org/documentation/agent/man/agent.cfg.html are available."
echo " Parameters have to be separated by a pipe | in the form of"
echo " server = myserver.mydomain.local/glpi/plugins/fusioninventory|httpd-trust = 192.168.0.25"
echo "The --help parameter display this help. It superseeds all other parameter."
exit 1
fi
taskscollect=${taskcollect:-$true}
tasksnetwork=${tasknetwork:-$true}
tasksdeploy=${taskdeploy:-$true}
tasksesx=${taskesx:-$true}
agentconfig=${agentconfig:-"server = https://myserver.mydomain.com/glpi/plugins/fusioninventory/|no-ssl-check 1"}
# Test if wget is installed.
type wget >/dev/null 2>&1 || { echo >&2 "I require wget but it's not installed. Aborting."; exit 1; }
shortversion="${version::5}"
echo "Target Version is $version"
BaseUrl=https://github.com/fusioninventory/fusioninventory-agent/releases/download/$shortversion/
downloadurlagent=$BaseUrl\fusioninventory-agent_$version\_all.deb
downloadurlcollect=$BaseUrl\fusioninventory-agent-task-collect_$version\_all.deb
downloadurlnetwork=$BaseUrl\fusioninventory-agent-task-network_$version\_all.deb
downloadurldeploy=$BaseUrl\fusioninventory-agent-task-deploy_$version\_all.deb
downloadurlesx=$BaseUrl\fusioninventory-agent-task-esx_$version\_all.deb
# Setup agent
# Setup dependencies for Agent Core
echo "installing agent dependencies"
apt-get -y install dmidecode hwdata ucf hdparm >> FusionInventoryInstallation.log 2>/dev/null
apt-get -y install perl libuniversal-require-perl libwww-perl libparse-edid-perl >> FusionInventoryInstallation.log 2>/dev/null
apt-get -y install libproc-daemon-perl libfile-which-perl libhttp-daemon-perl >> FusionInventoryInstallation.log 2>/dev/null
apt-get -y install libxml-treepp-perl libyaml-perl libnet-cups-perl libnet-ip-perl >> FusionInventoryInstallation.log 2>/dev/null
apt-get -y install libdigest-sha-perl libsocket-getaddrinfo-perl libtext-template-perl >> FusionInventoryInstallation.log 2>/dev/null
apt-get -y install libxml-xpath-perl >> FusionInventoryInstallation.log 2>/dev/null
apt-get -y install libwrite-net-perl >> FusionInventoryInstallation.log 2>/dev/null
echo "Downloading Agent from $BaseUrl"
wget $downloadurlagent -q --show-progress
echo "Installing agent"
dpkg -i fusioninventory-agent_$version\_all.deb
sleep 2
echo
echo
if $taskcollect
then
echo "collect task is requested"
wget $downloadurlcollect -q --show-progress
dpkg -i fusioninventory-agent-task-collect_$version\_all.deb
else
echo "collect task is NOT requested"
fi
sleep 2
echo
echo
if $tasknetwork
then
echo "network task is requested"
echo "installing dependencies"
apt -y install libnet-snmp-perl libcrypt-des-perl libnet-nbname-perl libdigest-hmac-perl >> FusionInventoryInstallation.log 2>/dev/null
wget $downloadurlnetwork -q --show-progress
dpkg -i fusioninventory-agent-task-network_$version\_all.deb
else
echo "network task is NOT requested"
fi
sleep 2
echo
echo
if $taskdeploy
then
echo "deploy task is requested"
echo "installing dependencies"
apt -y install libfile-copy-recursive-perl libparallel-forkmanager-perl >> FusionInventoryInstallation.log 2>/dev/null
wget $downloadurldeploy -q --show-progress
dpkg -i fusioninventory-agent-task-deploy_$version\_all.deb
else
echo "deploy task is NOT requested"
fi
sleep 2
echo
echo
if $taskesx
then
echo "esx task is requested"
echo "installing dependencies"
wget $downloadurlesx -q --show-progress
dpkg -i fusioninventory-agent-task-esx_$version\_all.deb
else
echo "esx task is NOT requested"
fi
sleep 2
echo
echo
# Configuring agent
echo "Configuring agent"
echo $agentconfig | tr '|' '\n' > /etc/fusioninventory/conf.d/config.cfg
echo "Applying config"
service fusioninventory-agent start
echo
echo
echo "Setup Finished."
echo "You could find the dependencies installation log in FusionInventoryInstallation.log"