HEX
Server: LiteSpeed
System: Linux shams.tasjeel.ae 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: infowars (1469)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //lib/check_mk_agent/Site24x7InstallScript.sh
#!/bin/bash

PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/sfw/bin:$PATH
PS_CMD='ps auxww '
if [ -f "/etc/release" ]; then
	cat /etc/release | grep "Solaris 10" > /dev/null
	if [ $? = 0 ]; then
		PATH=/usr/xpg4/bin:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/sfw/bin:$PATH
		PS_CMD='ps -e '
	fi
fi
OS_BINARY_TYPE=''
OS_NAME=`uname -s`
OS_ARCH=`uname -m`
LDD_VERSION=`ldd --version 2>/dev/null | awk 'NR==1{ print $NF }'`
SUCCESS=0
WARNING=1
FAILURE=2
BOOL_TRUE='True'
BOOL_FALSE='False'
IS_VENV_SUPPORT_NEEDED=$BOOL_FALSE
IS_ARM_PROCESSOR=$BOOL_FALSE
ECHO_PRINT=5
THIRTY_TWO_BIT='32-bit'
SIXTY_FOUR_BIT='64-bit'
SUDO=''
PRODUCT_NAME=Site24x7
PRODUCT_NAME_UPPERCASE=`echo $PRODUCT_NAME | awk '{print toupper($0)}'`
PRODUCT_NAME_LOWERCASE=`echo $PRODUCT_NAME | awk '{print tolower($0)}'`
API_KEY=''
INSTALL_INPUT=''
INSTALL_PARAMS=''

IS_NONROOT='0'
INSTALL='INSTALL'
REINSTALL='REINSTALL'
UNINSTALL='UNINSTALL'

#local
LOCAL_SERVER=''

#livebuild
SERVER=https://staticdownloads.site24x7.com
DEFAULT_DOWNLOAD_PATH="/server/" #DONT CHANGE THIS. IT WILL BE REPLACED IN STATIC BUILD
THIRTY_TWO_BIT_INSTALL_FILE=$PRODUCT_NAME"FullStackAgent_x86Linux.install"
SIXTY_FOUR_BIT_INSTALL_FILE=$PRODUCT_NAME"FullStackAgent_x64Linux.install"
SIXTY_FOUR_BIT_ARM_INSTALL_FILE="arm/"$SIXTY_FOUR_BIT_INSTALL_FILE
CP_INSTALL_FILE=$PRODUCT_NAME"FullStackAgent_CrossPlatform.install"
INSTALL_FILE=$PRODUCT_NAME"FullStackAgent_LinuxIns.sh"
NIMBUS_DOWNLOAD_SERVER='https://s247downloads.nimbuspop.com'

DOWNLOAD_URL=""

print_green() {
    printf "\033[32m%s\033[0m\n" "$*"
}

print_console() {
    printf "%s\n" "$*"
}

print_red() {
    printf "\033[31m%s\033[0m\n" "$*"
}


print_done() {
    print_green "Done"
}

`command -v which 2>/dev/null 1>/dev/null`
if [ $? = 0 ]; then
    COMMAND_CHECKER="which"
else
    COMMAND_CHECKER="command -v"
fi

if ! [ $(command -v tar) ]; then
	print_red "Tar utility not present to unzip product. Try installing tar before proceed with agent installation"
    exit $FAILURE
fi

log() {
	if [ "$1" = "$ECHO_PRINT" ]; then
		echo "$2"
	fi
}

getHardwarePlatform() {		
	if [ "`which file`" = "" ]; then		
	    if [ `/usr/bin/getconf LONG_BIT` = "64" ]; then
		    OS_BINARY_TYPE="$SIXTY_FOUR_BIT"
		elif [ `/usr/bin/getconf LONG_BIT` = "32" ]; then
		    OS_BINARY_TYPE="$THIRTY_TWO_BIT"
		fi
	else
		if /usr/bin/file /sbin/init | grep 'ELF 64-bit' >/dev/null; then
		    OS_BINARY_TYPE="$SIXTY_FOUR_BIT"
		elif /usr/bin/file /sbin/init | grep 'ELF 32-bit' >/dev/null; then
		    OS_BINARY_TYPE="$THIRTY_TWO_BIT"
		elif [ `/usr/bin/getconf LONG_BIT` = "64" ]; then
		    OS_BINARY_TYPE="$SIXTY_FOUR_BIT"
		elif [ `/usr/bin/getconf LONG_BIT` = "32" ]; then
		    OS_BINARY_TYPE="$THIRTY_TWO_BIT"
		fi
	fi	
}	

command_test() {
    $COMMAND_CHECKER $1 2>/dev/null 1>/dev/null
    if [ $? -ne 0 ]; then
    	if [ $2 = "optional" ]; then
    		WARNING_MSG=$WARNING_MSG" $1"
    		WARNING_FLAG=$BOOL_TRUE
    	else
    		ERROR_MSG=$ERROR_MSG" $1"
    		SEVERE_FLAG=$BOOL_TRUE
    	fi 
    fi
}

utilityCheck() {
	WARNING_MSG='Kindly install these if possible : '
	ERROR_MSG='Please install the following utility : '
	WARNING_FLAG=$BOOL_FALSE
	SEVERE_FLAG=$BOOL_FALSE
	command_test useradd "optional"
	command_test groupadd "optional"
	command_test usermod "optional"
	command_test awk "mandatory"
	command_test sed "mandatory"
 	if [ "$SEVERE_FLAG" = "$BOOL_TRUE" ]; then
 		print_red $ERROR_MSG
 		print_red $WARNING_MSG
 		exit $FAILURE
 	fi
}

detectArchitectureType(){
	if [[ "$OS_ARCH" = *"ppc64le"* ]] || [[ "$OS_ARCH" = *"s390x"* ]] ; then
	  IS_VENV_SUPPORT_NEEDED=$BOOL_TRUE
	fi
	if [[ "$OS_ARCH" = *"arm"* ]] || [[ "$OS_ARCH" = *"ARM"* ]] || [[ "$OS_ARCH" = *"Arm"* ]] || [[ "$OS_ARCH" = *"aarch"* ]] ; then
	  IS_ARM_PROCESSOR=$BOOL_TRUE
	fi
	print_console "Detected os arch : $OS_BINARY_TYPE"
}

detectOs(){
	if [ "$OS_NAME" != "Linux" ]; then
		IS_VENV_SUPPORT_NEEDED=$BOOL_TRUE
	fi
	print_console "Detected OS : $OS_NAME"
}

format_version() {
        echo "$@" | awk -F. '{ printf("%03d%03d%03d\n", $1,$2,$3); }';
}

detectLibc(){
	libc_version="$(ldd --version 2>/dev/null | awk 'NR==1{ print $NF }')"
	if [ "$libc_version" != "" ]; then
		if [ "$(format_version $libc_version)" -lt "$(format_version 2.17)" ]; then
			print_red "Libc vesion $libc_version which is less than 2.17"
			IS_VENV_SUPPORT_NEEDED=$BOOL_TRUE
		fi
	fi
}

detectFlatCarOs(){
		OS_INFO=`uname -a`
        if [[ "$OS_INFO" = *"flatcar"* ]];then
                IS_VENV_SUPPORT_NEEDED=$BOOL_TRUE
        fi
}

checkShellUtility(){
	if command -v bash >/dev/null; then
    	SHELL_UTILITY="bash"
    else
    	SHELL_UTILITY="sh"
    fi
}

isRootUser() {
	if [ "$(id -u)" != "0" ]; then
		print_red "For root mode installation, you must run this script as root user or with 'sudo' privileges.\nIf you want to install the agent in non-root mode, please run the installation script using -nr or -nonroot option."
		exit $FAILURE
	fi
}

isNonRootUser() {
	if [ "$(id -u)" == "0" ]; then
		print_red "The -nr or -nonroot option cannot be used while executing the script as root user. Please run the installation script as a non-root user or remove the option for root mode installation."
		exit $FAILURE
	fi
}

checkForBinSupport(){
	checkShellUtility
	detectOs
	detectLibc
	detectArchitectureType 2>/dev/null
	detectFlatCarOs
}

setServerDomain() {
	if [ -n "$LOCAL_SERVER" ]; then
		SERVER=$LOCAL_SERVER
	elif [ "$PRODUCT_NAME_LOWERCASE" == "site24x7" ]; then
		DC="${MON_AGENT_API_KEY:0:2}"
		case "$DC" in 
			eu | cn | in | jp | ca | sa ) 
				SERVER="${SERVER//.com/.$DC}"
			;;
			au )
				SERVER="${SERVER//.com/.net.au}"
			;;
			ae | uk )
			SERVER="$NIMBUS_DOWNLOAD_SERVER"
			;;
		esac
	elif [ -n "$HOST" ]; then
		PROTOCOL=`echo $HOST | awk -F:// '{print $1}' | grep "http"`
		if [ -z $PROTOCOL ]; then
			PROTOCOL="http"
			HOST=$PROTOCOL"://"$HOST
		fi
		SERVER=$HOST
	else
		echo "Please provide the server name in -host=<hostname> format"
		exit $FAILURE
	fi
}

setServerDomainForReinstall() {
	DC=$(echo "$SERVER_NAME" | awk -F. '{print $NF}')
	case "$DC" in 
    	eu | cn | in | au | jp | ca | sa ) 
			SERVER="${SERVER//.com/.$DC}"
		;;
		au )
			SERVER="${SERVER//.com/.net.au}"
		;;
		ae | uk )
			SERVER="$NIMBUS_DOWNLOAD_SERVER"
		;;
	esac
}

download_utility_check(){
	if [ $(command -v wget) ]; then
		if [ "$SSL_NO_CHECK" = "$BOOL_TRUE" ]; then
			SSL_DISABLE_PARAM="--no-check-certificate"
		fi
		DOWNLOAD_CMD="wget -O"
		print_console "wget detected"

	elif [ $(command -v curl) ]; then
		if [ "$SSL_NO_CHECK" = "$BOOL_TRUE" ]; then
			SSL_DISABLE_PARAM="-k"
		fi
		DOWNLOAD_CMD="curl -Lo"
		print_console "curl detected"

	elif [ $(command -v fetch) ]; then
		if [ "$SSL_NO_CHECK" = "$BOOL_TRUE" ]; then
			SSL_DISABLE_PARAM="--no-verify-peer"
		fi
		DOWNLOAD_CMD="fetch -o"
		print_console "fetch detected"
	else
		DOWNLOAD_CMD=''
		print_red "Couldn't detect curl, wget and fetch to download the installer. Hence exiting installation"
		exit $FAILURE
	fi
}

setDownloadUrl() {
	if [ -n "$INPUT_DOWNLOAD_PATH" ]; then
		DWN_PATH=$INPUT_DOWNLOAD_PATH
	else
		DWN_PATH=$DEFAULT_DOWNLOAD_PATH
	fi
	if [ "$IS_VENV_SUPPORT_NEEDED" = "$BOOL_TRUE" ]; then
		DOWNLOAD_FILE="$CP_INSTALL_FILE"
	elif [ "$IS_ARM_PROCESSOR" = "$BOOL_TRUE" ]; then
		DOWNLOAD_FILE=$SIXTY_FOUR_BIT_ARM_INSTALL_FILE
	elif [ "$OS_BINARY_TYPE" = "$SIXTY_FOUR_BIT" ]; then
		DOWNLOAD_FILE=$SIXTY_FOUR_BIT_INSTALL_FILE
	elif [ "$OS_BINARY_TYPE" = "$THIRTY_TWO_BIT" ]; then
		DOWNLOAD_FILE=$THIRTY_TWO_BIT_INSTALL_FILE	
	fi
	DOWNLOAD_URL=$SERVER$DWN_PATH$DOWNLOAD_FILE
	print_console "Download url : $DOWNLOAD_URL"
}

deleteInstaller() {
        fileToDelete=`echo "${DOWNLOAD_URL##*/}"`
		if [ -f $fileToDelete  ];then
        	rm -f $fileToDelete
		fi
}

installAgent() {
	if [ "$IS_NONROOT" == "1" ]; then
		isNonRootUser
	else
		isRootUser
	fi
	getHardwarePlatform
	utilityCheck
	checkForBinSupport
	if [ "$INSTALL_INPUT" = "$REINSTALL" ];then
		if [ "$IS_NONROOT" == "1" ]; then
			username=`id -u -n`
			USER_HOME=`getent passwd $username | cut -d: -f6`
			INSTALL_DIR=$USER_HOME
		else
			INSTALL_DIR="/opt"
		fi
		INSTALL_DIR=$INSTALL_DIR""
		PRODUCT_HOME=$INSTALL_DIR/$PRODUCT_NAME_LOWERCASE""
		MON_AGENT_HOME=$PRODUCT_HOME/monagent
		SERVER_CONF=$MON_AGENT_HOME/conf/monagent.cfg
		SERVER_NAME=`cat $SERVER_CONF | grep -w "server_name" | head -1`
		setServerDomainForReinstall
	else
		setServerDomain
	fi
	download_utility_check
	setDownloadUrl
	echo ""
	echo "      -----------------------------------------------------------------------------------------------------------------------------------------------------"
	echo "      |																			  |"	
	echo "      |							      $PRODUCT_NAME_LOWERCASE server full-stack agent installation					         |"
	echo "      |																			  |"
	echo "      -----------------------------------------------------------------------------------------------------------------------------------------------------"
	echo ""	
	echo ""
	echo ""	
	if [ "$IS_VENV_SUPPORT_NEEDED" = "$BOOL_TRUE" ]; then
        echo "      --------------------------------------------------------Downloading install file for "$CP_INSTALL_FILE"----------------------------------------------------------"  
 	else
        echo "      --------------------------------------------------------Downloading install file for "$OS_BINARY_TYPE"----------------------------------------------------------"
	fi 	
	echo ""	
	if [ "$IS_VENV_SUPPORT_NEEDED" = "$BOOL_TRUE" ]; then
       if [ -f $CP_INSTALL_FILE  ];then
       		echo $CP_INSTALL_FILE "already exists so removing and downloading new one"
       		rm -f $CP_INSTALL_FILE
       fi
       $DOWNLOAD_CMD $CP_INSTALL_FILE $DOWNLOAD_URL $SSL_DISABLE_PARAM
        if [ ! -f $CP_INSTALL_FILE ]; then
           echo $CP_INSTALL_FILE" not present hence quitting"
           exit $FAILURE
        fi
        if [[ "$OS_NAME" = *"Sun"* ]] || [[ "$OS_NAME" = *"AIX"* ]];then
             eval "$SHELL_UTILITY $CP_INSTALL_FILE $INSTALL_PARAMS"
        else
             eval "$SHELL_UTILITY $CP_INSTALL_FILE $INSTALL_PARAMS"
        fi
    elif [ "$OS_BINARY_TYPE" = "$THIRTY_TWO_BIT" ]; then
        if [ -f $THIRTY_TWO_BIT_INSTALL_FILE  ];then
       		echo $THIRTY_TWO_BIT_INSTALL_FILE "already exists so removing and downloading new one"
       		rm -f $THIRTY_TWO_BIT_INSTALL_FILE
       	fi
        $DOWNLOAD_CMD $THIRTY_TWO_BIT_INSTALL_FILE $DOWNLOAD_URL $SSL_DISABLE_PARAM
        if [ ! -f $THIRTY_TWO_BIT_INSTALL_FILE  ]; then
        echo $THIRTY_TWO_BIT_INSTALL_FILE" not present hence quitting"
        exit $FAILURE
        fi
        chmod 755 $THIRTY_TWO_BIT_INSTALL_FILE
        eval "$SHELL_UTILITY ./$THIRTY_TWO_BIT_INSTALL_FILE $INSTALL_PARAMS"
    else
        if [ -f $SIXTY_FOUR_BIT_INSTALL_FILE  ];then
       		echo $SIXTY_FOUR_BIT_INSTALL_FILE "already exists so removing and downloading new one"
       		rm -f $SIXTY_FOUR_BIT_INSTALL_FILE
       	fi
        $DOWNLOAD_CMD $SIXTY_FOUR_BIT_INSTALL_FILE $DOWNLOAD_URL $SSL_DISABLE_PARAM
        if [ ! -f $SIXTY_FOUR_BIT_INSTALL_FILE  ]; then
        echo $SIXTY_FOUR_BIT_INSTALL_FILE" not present hence quitting"
        exit $FAILURE
        fi
        chmod 755 $SIXTY_FOUR_BIT_INSTALL_FILE
        eval "$SHELL_UTILITY ./$SIXTY_FOUR_BIT_INSTALL_FILE $INSTALL_PARAMS"
    fi
    deleteInstaller
}

usage() {
	log $ECHO_PRINT ""
	log $ECHO_PRINT "Usage :"
	log $ECHO_PRINT "	Install command   : bash $INSTALL_FILE -i -automation=true -key=<device_key>"
	log $ECHO_PRINT ""	
	log $ECHO_PRINT "Options:"
	log $ECHO_PRINT "	-ri                          	Reinstall Server Agent with new source packages and old configuration"
	log $ECHO_PRINT "	-f                           	Force install the agent even when the agent present already"
	log $ECHO_PRINT "	-nr,-nonroot                 	Run the agent as a non-root user"
	log $ECHO_PRINT "	-nosyslog|-ns                	Disable syslog Monitoring"
	log $ECHO_PRINT "	-newkey|-nk                  	Register agent with new key"
	log $ECHO_PRINT "	-h                           	output usage information"
	log $ECHO_PRINT "	-ct,-CT                      	Configuration Template to be associated with the server"
	log $ECHO_PRINT "	-rule                        	Configuration Rule to be associated with the server"
	log $ECHO_PRINT "	-uid                         	Option to create a $PRODUCT_NAME_LOWERCASE agent User with a specific User ID"
	log $ECHO_PRINT "	-gid                         	Option to create a $PRODUCT_NAME_LOWERCASE agent group with a specific Group ID"
	log $ECHO_PRINT "	-dn,-DN                      	Display name of the server"
	log $ECHO_PRINT "	-gn,-GN                     	Group to which the server has to be added"
	log $ECHO_PRINT "	-tp,-TP                      	Threshold profile to be associated with the server"
	log $ECHO_PRINT "	-np,-NP                      	Notification profile to be associated with the server"
	log $ECHO_PRINT "	-rp,-RP                      	Resource Profile to be associated with the server"
	log $ECHO_PRINT "	-lp,-LP                      	Log Profile to be associated with the server"
	log $ECHO_PRINT "	-lt,-LT                      	Log Type to be associated with the server. For example -lt=SysLog"
	log $ECHO_PRINT "	-lf,-LF                    	Log Files to be collected for given log type. For example -lf=/var/log/syslog"
	log $ECHO_PRINT "	-automation=false            	Disable IT Automation Module in the server agent"
	log $ECHO_PRINT "	-plugins=false               	Disable Plugin Module in the server agent"
	log $ECHO_PRINT "	-location=<value>                        Add location tag to the server monitor"
	log $ECHO_PRINT "	-mysql='<mysql_configuration>'           Integrate MySQL Monitor along with Agent Installation"
	log $ECHO_PRINT "	-prometheus='<prometheus_configuration>' Integrate Prometheus along with Agent Installation"
	log $ECHO_PRINT "	-statsd='<statsd_configuration>'         Integrate Statsd along with Agent Installation"
	log $ECHO_PRINT "	-proxy                       	Set proxy to connect to the $PRODUCT_NAME_LOWERCASE server, if needed.
					EXAMPLE: -proxy=username:password@host:port, if there is no username and passowrd for proxy server then use -proxy=host:port"
	if [ "$PRODUCT_NAME" == "Site24x7" ]; then
		log $ECHO_PRINT "	-s24x7-agent                 	Run the agent as a site24x7-agent user"
		log $ECHO_PRINT ""
		log $ECHO_PRINT "For more command line installation configurations, refer more parameters at https://www.site24x7.com/help/admin/adding-a-monitor/command-line-installation.html"
		log $ECHO_PRINT ""
	fi
	exit $FAILURE
}

main() {
	while [ "$1" != "" ]; do
		KEY=`echo $1 | awk -F= '{print $1}'`
		VALUE=`echo $1 | awk -F= '{print $2}'`
		if [ "$VALUE" != "" ]; then
			ARGUMENT=$KEY'='\"$VALUE\"
		else
			ARGUMENT=$KEY
		fi
		INSTALL_PARAMS=$INSTALL_PARAMS' '$ARGUMENT
		case $KEY in
				-h|--help)
					usage
				;;
				-nr|-nonroot)
					IS_NONROOT='1'
				;;
				-i)
					INSTALL_INPUT=$INSTALL
				;;
				-ri)
					INSTALL_INPUT=$REINSTALL
				;;
				-u)
					INSTALL_INPUT=$UNINSTALL
				;;
				-key)
					MON_AGENT_API_KEY=$VALUE
				;;
				-host)
					HOST=$VALUE
				;;
				-dpath)
					INPUT_DOWNLOAD_PATH=$VALUE
				;;
				-nocheckcert)
					SSL_NO_CHECK=$BOOL_TRUE
				;;
		esac
		shift
	done
	install_agent=$BOOL_TRUE
	if [ "$INSTALL_INPUT" = "$REINSTALL" ]; then
		install_agent=$BOOL_TRUE
		printf "Reinstallation in Progress \n"
	elif [ "$MON_AGENT_API_KEY" = "" ] || [ "$INSTALL_INPUT" = "" ]; then
		install_agent=$BOOL_FALSE
	fi
	if [ "$install_agent" = "$BOOL_TRUE" ]; then
		installAgent
		if [ "$OS_NAME" = "Linux" ]; then
			printf "\n"
			if [ "$PRODUCT_NAME" == "Site24x7" ]; then
				print_green "Have more servers? Try our bulk installation techniques. Refer link : https://www.site24x7.com/help/admin/adding-a-monitor/linux-server-monitoring.html#bulk-installation"
			fi
			printf "\n"
		fi
	else
		usage
	fi
}

main "$@"