2020-12-16 17:25:24 +08:00

101 lines
2.7 KiB
Bash

#!/bin/bash
#Copyright (c) 2020 Huawei Technologies Co.,Ltd.
#
#openGauss is licensed under Mulan PSL v2.
#You can use this software according to the terms and conditions of the Mulan PSL v2.
#You may obtain a copy of Mulan PSL v2 at:
#
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
#-------------------------------------------------------------------------
#
# ExecuteSQLOnAllDB.sh
#
# IDENTIFICATION
# src/manager/om/script/gspylib/inspection/lib/checkblacklist/ExecuteSQLOnAllDB.sh
#
#-------------------------------------------------------------------------
GSPORT=''
SQLFILE=''
function usage()
{
echo "***********************************************************************"
echo "* ExecuteSQLOnAllDB.sh usage *"
echo "* two indispensable paramater as following *"
echo "* -p: coordinator port number *"
echo "* -f: sql file to execute *"
echo "* example: ./ExecuteSQLOnAllDB.sh -p 25308 -f blacklist_check.sql *"
echo "***********************************************************************"
}
function parse_para()
{
while getopts "p:f:h" opt
do
case $opt in
p)
if [ -z $GSPORT ]; then
let GSPORT=$OPTARG
else
echo "GSPORT: "$GSPORT
echo "SQLFILE: "$SQLFILE
echo "ERROR: duplicate port number"
usage
exit 1
fi
;;
f)
if [ -z $SQLFILE ]; then
SQLFILE=$OPTARG
else
echo "GSPORT: "$GSPORT
echo "SQLFILE: "$SQLFILE
echo "ERROR: duplicate sql file"
usage
exit 1
fi
;;
h)
usage
exit 1
;;
?)
echo "ERROR: unkonw argument"
echo "GSPORT: "$GSPORT
echo "SQLFILE: "$SQLFILE
usage
exit 1
;;
esac
done
if [[ -z $SQLFILE || -z $GSPORT ]]; then
echo "GSPORT: "$GSPORT
echo "SQLFILE: "$SQLFILE
echo "ERROR: must designate -p and -f"
usage
exit 1
fi
}
parse_para $*
echo "GSPORT: "$GSPORT
echo "SQLFILE: "$SQLFILE
for db in $(gsql -d postgres -p $GSPORT -c "select datname||' GAUSSDB' from pg_database where datname != 'template0'" | grep GAUSSDB | awk '{print $1}')
do
echo "****************************************Blacklist Check for DataBase: "$db"**************************************************"
if [ ! -d ./log ]; then mkdir ./log ;fi
sql_log=$(pwd)/log/sqlLog.log
gsql -d $db -p $GSPORT -r -P pager=off -f $SQLFILE >$sql_log
cat $sql_log
done