1#!/bin/sh 2#----------------------------------------------------------------------------# 3# Xymon client main script. # 4# # 5# This invokes the OS-specific script to build a client message, and sends # 6# if off to the Xymon server. # 7# # 8# Copyright (C) 2005-2011 Henrik Storner <henrik@hswn.dk> # 9# # 10# This program is released under the GNU General Public License (GPL), # 11# version 2. See the file "COPYING" for details. # 12# # 13#----------------------------------------------------------------------------# 14# 15# $Id: xymonclient.sh 7878 2016-01-26 05:21:46Z jccleaver $ 16 17# Must make sure the commands return standard (english) texts. 18LANG=C 19LC_ALL=C 20LC_MESSAGES=C 21export LANG LC_ALL LC_MESSAGES 22 23if test $# -ge 1; then 24 if test "$1" = "--local"; then 25 LOCALMODE="yes" 26 fi 27 shift 28fi 29 30if test "$XYMONOSSCRIPT" = ""; then 31 XYMONOSSCRIPT="xymonclient-`uname -s | tr '[ABCDEFGHIJKLMNOPQRSTUVWXYZ/]' '[abcdefghijklmnopqrstuvwxyz_]'`.sh" 32fi 33 34MSGFILE="$XYMONTMP/msg.$MACHINEDOTS.txt" 35MSGTMPFILE="$MSGFILE.$$" 36if test "$LOCALMODE" = "yes"; then 37 if test -z "$LOCAL_CLIENTCONFIG"; then 38 LOCAL_CLIENTCONFIG="$XYMONHOME/etc/localclient.cfg" 39 fi 40 if test -z "$LOCAL_LOGFETCHCFG"; then 41 LOCAL_LOGFETCHCFG="$XYMONHOME/etc/logfetch.cfg" 42 fi 43 44 # If not present, fall back to dynamic logfetch location below 45 if test -f "$LOCAL_LOGFETCHCFG"; then 46 LOGFETCHCFG="$LOCAL_LOGFETCHCFG" 47 fi 48fi 49 50if test -z "$LOGFETCHCFG"; then 51 LOGFETCHCFG=$XYMONTMP/logfetch.$MACHINEDOTS.cfg 52fi 53if test -z "$LOGFETCHSTATUS"; then 54 LOGFETCHSTATUS=$XYMONTMP/logfetch.$MACHINEDOTS.status 55fi 56 57export LOGFETCHCFG LOGFETCHSTATUS 58 59rm -f $MSGTMPFILE 60touch $MSGTMPFILE 61 62 63CLIENTVERSION="`$XYMONHOME/bin/clientupdate --level`" 64if test -z "$CLIENTVERSION"; then 65 CLIENTVERSION="`$XYMON --version`" 66fi 67 68if test "$LOCALMODE" = "yes"; then 69 echo "@@client#1|1|127.0.0.1|$MACHINEDOTS|$SERVEROSTYPE" >> $MSGTMPFILE 70fi 71 72echo "client $MACHINE.$SERVEROSTYPE $CONFIGCLASS" >> $MSGTMPFILE 73$XYMONHOME/bin/$XYMONOSSCRIPT >> $MSGTMPFILE 74# logfiles 75if test -f $LOGFETCHCFG 76then 77 $XYMONHOME/bin/logfetch $LOGFETCHOPTS $LOGFETCHCFG $LOGFETCHSTATUS >>$MSGTMPFILE 78fi 79# Client version 80echo "[clientversion]" >>$MSGTMPFILE 81echo "$CLIENTVERSION" >> $MSGTMPFILE 82 83# See if there are any local add-ons (must do this before checking the clock) 84if test -d $XYMONHOME/local; then 85 for MODULE in $XYMONHOME/local/* 86 do 87 if test -x $MODULE 88 then 89 echo "[local:`basename $MODULE`]" >>$MSGTMPFILE 90 $MODULE >>$MSGTMPFILE 91 fi 92 done 93fi 94 95# System clock 96echo "[clock]" >> $MSGTMPFILE 97$XYMONHOME/bin/logfetch --clock >> $MSGTMPFILE 98 99if test "$LOCALMODE" = "yes"; then 100 echo "@@" >> $MSGTMPFILE 101 $XYMONHOME/bin/xymond_client --local $LOCAL_CLIENTOPTS --config=$LOCAL_CLIENTCONFIG <$MSGTMPFILE 102else 103 $XYMON $XYMSRV "@" < $MSGTMPFILE >$LOGFETCHCFG.tmp 104 if test -f $LOGFETCHCFG.tmp 105 then 106 if test -s $LOGFETCHCFG.tmp 107 then 108 mv $LOGFETCHCFG.tmp $LOGFETCHCFG 109 else 110 rm -f $LOGFETCHCFG.tmp 111 fi 112 fi 113fi 114 115# Save the latest file for debugging. 116rm -f $MSGFILE 117mv $MSGTMPFILE $MSGFILE 118 119if test "$LOCALMODE" != "yes" -a -f $LOGFETCHCFG; then 120 # Check for client updates 121 SERVERVERSION=`grep "^clientversion:" $LOGFETCHCFG | cut -d: -f2` 122 if test "$SERVERVERSION" != "" -a "$SERVERVERSION" != "$CLIENTVERSION"; then 123 exec $XYMONHOME/bin/clientupdate --update=$SERVERVERSION --reexec 124 fi 125fi 126 127exit 0 128 129