#!/bin/sh
#
# test_mysql_repli "show salve status" ans ULS
#
# Steuerung ueber Environment:
#   ULSNAME: ULS-Hostname
#   ULSSECTION: Section im ULS
#   MYSQL_SOCKET: Socket zur DB - wenn Socket gesetzt, wird Host und Port ignoriert
#   MYSQL_HOST: oder Host
#   MYSQL_PORT: und Port, wenn abweichend von 3306
#   MYSQL_USER: User zur DB
#   MYSQL_PASSWORD: Password zur DB
#
###################################################################################
#
if [[ -z "$MYSQL_USER" ]]
 then
  if [[ -f /etc/uls/mysql.conf ]]
   then
    . /etc/uls/mysql.conf
  else
    echo "/etc/uls/mysql.conf not found."
    exit 0
  fi
fi
#
unset D S U
#
while getopts d:Su:? op
 do
  case "$op" in
    d) D="-d $OPTARG";;
    S) S="-S";;
    u) U="-u $OPTARG";;
    *) echo "usage: $0 [-d storepath] [-S|-u ulsserver]"
       exit 1;;
  esac
done
shift $(( $OPTIND - 1 ))
#
. `dirname $0`/uls_header $1
#
callmysql()
{ if [[ -n "$MYSQL_SOCKET" ]]
   then
    mysql $2 -B -S "$MYSQL_SOCKET" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$1"
  elif [[ -n "$MYSQL_PORT" ]]
   then
    mysql $2 -B -h "$MYSQL_HOST" -P "$MYSQL_PORT"  -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$1"
  elif [[ -n "$MYSQL_HOST" ]]
   then
    mysql $2 -B -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$1"
  else
    mysql $2 -B -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$1"
  fi
}
#
export LANG=C
export LC_CTYPE=en_US.UTF-8
#
( L=`callmysql "select @@character_set_client" -N`
  echo "L;;;;;;$L;"
  echo "D;$DT;${ULSNAME:-${ULSHOSTNAME:-`hostname`}};${ULSSECTION:-MySQL};"
  callmysql "show slave status" | awk -F '\t' '
NR == 1 { for( i = 1; i <= NF; i++ )
            fn[i] = $i
        }
NR == 2 { for( i = 1; i <= NF; i++ )
          { if( fn[i] != "" && $i != "" )
            { if( $i ~ "^[0-9]+$" )
                printf("V;;;;Replikation;%s;\"%s\";#\n", fn[i], $i)
              else
              { gsub("\\\\n", "\n", $i)
                printf("V;;;;Replikation;%s;\"%s\";\n", fn[i], $i)
              }
            }
          }
        }'
) | send_test_tab $D $S $U
