
#!/bin/sh
# File	: get_linux-info.sh
# By	: Maarten.deBoer@Atos.net, 180103
# Subject	: SCript to upload (Linux-)proc info tp Graphite
#(0.2),180104	: Renamed to get_linux-info (from graphite_proc.sh), added USAGE
PGM=`basename $0|cut -d\. -f1`
VER="0.2"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
ASC="/tmp/${PGM}.asc"
HOSTNAME=`hostname |cut -d\. -f1`

MAIL=""
MAILTO="maarten.deboer@atos.net"

TXGRAPHITE=""
GRAPHITESRV="10.192.109.164 2003"
NC="${HOME}/bin/nc"

PROC="/proc"

SITE="nl-fsod"
PREFIX="linux-info.${SITE}.${HOSTNAME}"

USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VER}"
  echo "  options:"
  echo "    -g | --graphite : send to GRAPHIte ({${GRAPHITESRV})"
  echo "    -h | --help     : this help"
  echo "    -m | --mail     : MAIL this info (to ${MAILTO})"
  echo "    --mailto        : MAILTO ($_MAILTO})"
  echo "    -V              : Version"
  echo "    -x              : set -x"
}

# Check options
while [ ${#} -ge 1 ]
  do
  case ${1} in
    -g | --graphite) TXGRAPHITE="1"; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -m | --mail) MAIL="1" ;;
    --mailto) MAILTO=${2}; MAIL="1" shift ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
touch ${TMP}

DATE_S="`date +%s`"

# Version
echo "${PREFIX}.script.version ${VER} ${DATE_S}"|tee -a ${TMP}

# Proc-CPUinfo
CPUS=`cat ${PROC}/cpuinfo|grep -i processor|wc -l`
BOGOMIPS=`cat ${PROC}/cpuinfo|grep -i bogomips|head -1|cut -d\: -f2`
CPUFAM=`cat ${PROC}/cpuinfo|grep -i 'cpu family'|head -1|cut -d\: -f2`
CPUMHZ=`cat ${PROC}/cpuinfo|grep -i 'cpu MHz'|head -1|cut -d\: -f2`
echo "${PREFIX}.proc.cpuinfo.cpu-s ${CPUS} ${DATE_S}"|tee -a ${TMP}
echo "${PREFIX}.proc.cpuinfo.bogomips ${BOGOMIPS} ${DATE_S}"|tee -a ${TMP}
echo "${PREFIX}.proc.cpuinfo.cpu-fam ${CPUFAM} ${DATE_S}"|tee -a ${TMP}
echo "${PREFIX}.proc.cpuinfo.cpu-mhz ${CPUMHZ} ${DATE_S}"|tee -a ${TMP}

# Proc-MemoryInfo
cat ${PROC}/meminfo| while read LINE
do
#  echo ${LINE}
  ITEM=`echo ${LINE}|cut -d\: -f1`
  VALUE=`echo ${LINE}|cut -d\: -f2|awk '{print $1}'`
  UNIT=`echo ${LINE}|cut -d\: -f2|awk '{print $2}'`
  echo "${PREFIX}.proc.meminfo.${ITEM}-${UNIT} ${VALUE} ${DATE_S}"|tee -a ${TMP}
done  # cat ${PROC}

# Proc-Uptime
UPSECONDS=`cat ${PROC}/uptime|awk '{print $1}'|cut -d\. -f1`
UPDAYS=`expr ${UPSECONDS} / 86400`
echo "${PREFIX}.proc.uptime.secs ${UPSECONDS} ${DATE_S}"| tee -a ${TMP}
echo "${PREFIX}.proc.uptime.days ${UPDAYS} ${DATE_S}"|tee -a ${TMP}

# Etc-OS-release
if [ -f /etc/redhat-release ]; then
  REDHATRELEASE=`cat /etc/redhat-release`
else
  REDHATRELEASE=""
fi
echo "${PREFIX}.etc.redhat-release \"${REDHATRELEASE}\" ${DATE_S}"| tee -a ${TMP}
if [ -f /etc/os-release ]; then
  cat /etc/os-release|while read LINE
  do
    ITEM=`echo ${LINE}|cut -d\= -f1`
    VALUE=`echo ${LINE}|cut -d\= -f2`
    echo "${PREFIX}.etc.os-release.${ITEM} ${VALUE} ${DATE_S}"| tee -a ${TMP}
  done  # cat
fi

if [ ${TXGRAPHITE} ]; then
  echo "`date` Sending to Graphite ${GRAPHITESRV} ..."|tee -a ${LOG}
  cat ${TMP} | ${NC} ${GRAPHITESRV}
fi

if [ ${MAIL} ]; then
  cp ${TMP} ${ASC}
  date | mailx -a ${ASC} -s "Linux info [${PGM} v${VER}]" ${MAILTO}
  echo "`date` mailed to ${MAILTO}"|tee -a ${LOG}
fi

rm ${TMP}
exit 0

