#!/bin/bash # -------------------------------------------------------------------- # LogMatrix / OpenService NerveCenter 'ncstatus' # Copyright (C) 2016 OpenService, Inc. All Rights Reserved. # # LogMatrix NerveCenter 6.2.00 # # ncstatus - display status of NerveCenter service. # # You are welcome to adapt this script as you like # if [ ! -d /opt/OSInc/nc/bin ]; then echo Check NerveCenter installation. exit 1 fi # -------------------------------------------------------------------- # Version - Display version info version() { ver=`cat /opt/OSInc/nc/dat/version` rel=`cat /opt/OSInc/nc/dat/version-release` echo "ncstatus $ver ($rel)" } # -------------------------------------------------------------------- # Help - Display help info help() { echo " " echo " ncstatus [-p|--process] [-s|--summary] [-a|-all]" echo " " echo " -p,--process Print process heirarchy" echo " -s,--summary Print summary info" echo " -a,--all Equivalent of -p -s -w" echo " " echo " ncstatus [-h|--help] [-v|--ver]" echo " " echo " -v,--ver Print version" echo " -h,--help Print usage" echo " " } # -------------------------------------------------------------------- # Options process="no" summary="no" pollers=0 # -------------------------------------------------------------------- # Process command-line arguments while [[ $# > 0 ]]; do case $1 in -p|--process) process="yes" shift ;; -s|--summary) summary="yes" shift ;; -a|-all) process="yes" summary="yes" shift ;; -h|--help) version help exit 0 ;; -v|-i|--ver|--version|-info) version exit 0 ;; *) shift ;; esac done # -------------------------------------------------------------------- # Process Tree printer indent=2 printprocinfo() { pid=$* if [ $process = "yes" ]; then for ((i=1;i<$indent;i++)) ; do echo -n " " ; done cmd=`ps -p $pid -o comm=` vss=`ps -p $pid -o vsz=` cpu=`ps -p $pid -o %cpu=` echo "$cmd (pid $pid) $cpu %cpu, $vss KiB" fi indent=$((indent+1)) children=`pgrep -P $*` for child in $children; do if [ $summary = "yes" ]; then childname=`ps -p $child -o comm=` if [ $childname = "ncsnmppoller" ]; then pollers=$((pollers + 1)) fi fi printprocinfo $child done indent=$((indent-1)) } # -------------------------------------------------------------------- # Report status of ncserver: whether running or not. ncactive() { result=0 NCPID=`/bin/ps -e | awk '$4 == "ncserver" {print $1}'` if [ -z "$NCPID" ]; then echo "nervecenter service stopped." else result=1 echo "nervecenter service running (pid $NCPID)" fi return $result } # -------------------------------------------------------------------- # Report status of ncserver: whether running or not per service ctrl ncactiveservice() { result=0 rpm -q systemd > /dev/null 2>&1 if [ $? -eq 0 ]; then # This is a RHEL7/CentOS7 'systemd' environment systemctl is-active nervecenter >/dev/null 2>&1 if [ $? -eq 0 ]; then result=1 echo nervecenter is running... else echo nervecenter is stopped fi else # This is a init.d environment. /bin/bash /opt/OSInc/nc/install/ncservice status if [ $? -ne 3 ]; then result=1 fi fi return $result } # -------------------------------------------------------------------- # main processing ncactive if [ $? -eq 1 ]; then ncservers=`/bin/ps -e | awk '$4 == "ncserver" {print $1}'` # If user wants parent/child listing, display it. if [ $process = "yes" -o $summary = "yes" ]; then if [ $process = "yes" ]; then echo " " echo "Processes:" fi for ncserver in $ncservers; do username=`ps -p $ncserver -o user=` printprocinfo $ncserver echo " " if [ $summary = "yes" ]; then echo "Summary:" if [ -r /var/opt/NerveCenter/proc/ncserver.0/ncserver.starttime ]; then echo " Started: `cat /var/opt/NerveCenter/proc/ncserver.0/ncserver.starttime`" fi echo " Operator account: $username" echo " SNMP Pollers: $pollers" fi done fi fi exit 0 # -------------------------------------------------------------------- # ###