79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/bin/bash
 | 
						|
#
 | 
						|
# NAME
 | 
						|
#     status.sh - Checks the status of the nevisAuth instance.
 | 
						|
#
 | 
						|
# SYNOPSIS
 | 
						|
#     status.sh
 | 
						|
#
 | 
						|
# DESCRIPTION
 | 
						|
#     Performs periodic checks until the instance is up or broken or timeout is reached.
 | 
						|
#     The script terminates when the process of the instance stops running.
 | 
						|
#     There are no arguments for this script.
 | 
						|
#
 | 
						|
# EXIT CODES
 | 
						|
#  0    Instance is up.
 | 
						|
#  1    Instance process is not running.
 | 
						|
#  2    Instance is broken.
 | 
						|
#  3    Timeout reached.
 | 
						|
 | 
						|
# Defines how much we should sleep between checking if the instance is up.
 | 
						|
interval=1
 | 
						|
# Defines how much we should wait the instance to start up until we give up and exit.
 | 
						|
timeout=70
 | 
						|
((end_time=${SECONDS}+$timeout))
 | 
						|
 | 
						|
# Checks if the process of the instance is still running.
 | 
						|
# Arguments:
 | 
						|
#   None
 | 
						|
# Returns:
 | 
						|
#   In case it is running, returns 0, otherwise non-zero (exit code of systemctl).
 | 
						|
isProcessRunning() {
 | 
						|
  systemctl is-active --quiet nevisauth@default
 | 
						|
  IS_RUNNING=$?
 | 
						|
  return $IS_RUNNING
 | 
						|
}
 | 
						|
 | 
						|
# Checks if the instance is up. (Attempts connecting to the instance)
 | 
						|
# Arguments:
 | 
						|
#   None
 | 
						|
# Returns:
 | 
						|
#   If the connection was successful and the instance up (is not broken), returns 0.
 | 
						|
#   If the connection was not successful, returns 1.
 | 
						|
checkInstance() {
 | 
						|
  lsof -i :8991 -sTCP:LISTEN
 | 
						|
  EXIT_CODE=$?
 | 
						|
  return $EXIT_CODE
 | 
						|
}
 | 
						|
 | 
						|
# This function encapsulates the logic of checking if the process is running and if the instance is up.
 | 
						|
# In case the process is not running, exits with exit code 1.
 | 
						|
# Arguments:
 | 
						|
#   None
 | 
						|
# Returns:
 | 
						|
#   If the instance process is running, returns the result of the instance check function.
 | 
						|
check() {
 | 
						|
 if isProcessRunning
 | 
						|
  then
 | 
						|
    checkInstance
 | 
						|
    CS=$?
 | 
						|
    return $CS
 | 
						|
  else
 | 
						|
    echo "Process is not running."
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
}
 | 
						|
 | 
						|
# Check the status of the instance periodically.
 | 
						|
while ((${SECONDS} < ${end_time}))
 | 
						|
do
 | 
						|
  sleep ${interval}
 | 
						|
  if check
 | 
						|
  then
 | 
						|
    echo "Instance is up."
 | 
						|
    exit 0
 | 
						|
  fi
 | 
						|
done
 | 
						|
 | 
						|
echo "Exceeded check timeout (70s). Instance is down."
 | 
						|
exit 3 |