#!/bin/sh

# Пользоваться так: 
# bin/dt-ppcdata-check-audit-log-off
# Реплики одного шарда:
# bin/dt-ppcdata-check-audit-log-off ppcdata21

# Запускать там, где работает executer и есть доступ к серверам

## Внутри у проверок, запускать на соответствующей машине-реплике:
# conf:   grep plugin /etc/mysql/"$INSTANCE".cnf|grep '^[^#]'|wc -l 
# conf_d: ls /etc/mysql/"$INSTANCE".conf.d/audit.cnf 2>/dev/null |wc -l
# plugin: lm $INSTANCE mysql "select * from mysql.plugin where name = 'audit_log'" |wc -l
# vars:   lm $INSTANCE mysql "show variables like '%audit%'"|wc -l
# files:  ls /opt/mysql.$INSTANCE/data/audit.log*
# lsof:   lsof /opt/mysql.$INSTANCE/data |grep audit.log |grep mysqld |wc -l




#======================================================================================

# параметром можно передавать только имя инстанса; выкидываем все подозрительные символы
export shard=`echo $1|sed 's/[^a-z0-9_]//g'`
# а если параметра нет -- берем звездочку, чтобы нашлась самая большая таблица
if [ -z $1 ] 
then
	export conductor_group='direct_ng_databases_mysql_ppcdata_ppcdata'
    export shard_list_cmd='lm --complete'
else
    export conductor_group=$shard
    export shard_list_cmd="echo $shard"
fi

# executer -- только чтобы получить список всех серверов; если надо -- можно поменять на другой источник
executer -q exec %$conductor_group 'hostname -f' 2>/dev/null |sort | while read h ; do ssh -q root@$h "shard_list_cmd='$shard_list_cmd' sh -s" <<'EOF'
h=`hostname -f`; 
for INSTANCE in $($shard_list_cmd); do 
	conf=$(grep plugin /etc/mysql/"$INSTANCE".cnf|grep '^[^#]'|wc -l); 
    conf_d=$(ls /etc/mysql/"$INSTANCE".conf.d/audit.cnf 2>/dev/null |wc -l)
    plugin=$(lm $INSTANCE mysql "select * from mysql.plugin where name = 'audit_log'" |wc -l)
    vars=$(lm $INSTANCE mysql "show variables like '%audit%'"|wc -l)
    files=$(ls /opt/mysql.$INSTANCE/data/audit.log* 2>/dev/null|wc -l)
    lsof=$(lsof /opt/mysql.$INSTANCE/data |grep audit.log |grep mysqld|wc -l)
    [ $conf -eq 0 ] && conf_st=ok || conf_st=FAIL
    [ $conf_d -eq 0 ] && conf_d_st=ok || conf_d_st=FAIL
    [ $plugin -eq 0 ] && plugin_st=ok || plugin_st=FAIL
    [ $vars -eq 0 ] && vars_st=ok || vars_st=FAIL
    [ $files -eq 0 ] && files_st=ok || files_st=FAIL
    [ $lsof -eq 0 ] && lsof_st=ok || lsof_st=FAIL
	echo "$h $INSTANCE conf: $conf_st conf_d: $conf_d_st plugin: $plugin_st vars: $vars_st files: $files_st lsof: $lsof_st"; 
done;
EOF
done

