Skip to content
Snippets Groups Projects

Db Profiles

1 file
+ 28
109
Compare changes
  • Side-by-side
  • Inline
+ 28
109
@@ -10,133 +10,52 @@
cd $( dirname $0 )
. jobhelper.sh || exit 1
. vendor/ini.class.sh || exit 1
. $(dirname $0)/includes/dbdetect.class.sh
DBD_BASEDIR=plugins/localdump/profiles/
declare -A DBD_PARAMS
DBD_DEBUG=0
# --------------------------------------------------------------------
#
# --------------------------------------------------------------------
# ---------- GETTER
function dbdetect._wd(){
test "$DBD_DEBUG" -eq "1" && echo "DEBUG: $*"
}
function dbdetect.getConfigs(){
find ${DBD_BASEDIR} -type f -name "*.ini"
}
USAGE="Detect profiles for databases which are located in
$DBD_BASEDIR.
function dbdetect.getType(){
basename "$1" | cut -d "_" -f 1 | sed "s,\.ini$,,"
}
function dbdetect.getProfile(){
basename "$1" | cut -d "_" -f 1- | sed "s,\.ini$,,"
}
For detected profiles it shows its used parameters.
This script helps you to define / verify custom profiles.
SYNTAX: $( basename $0) [OPTIONS] [FILTER]
function dbdetect.exists(){
local _config="$1"
OPTIONS:
-d|--debug show debug information
-h|--help Show this help
DBD_PARAMS=
PARAMETERS:
FILTER a string / regex to filter profilenames.
local _found=0
# set file and inisection we read values from
ini.set "$_config" "detect"
# --- check tcp
local tcpport; tcpport=$( ini.value "tcp" )
local tcptarget; tcptarget=$( ini.value "tcp-target" )
if { ! >/dev/tcp/$tcptarget/$tcpport; } > /dev/null 2>&1; then
# echo "No port tcp $tcpport available"
dbdetect._wd "... No port tcp $tcpport available on $tcptarget"
return 1
fi
dbdetect._wd "... Found tcp $tcpport on $tcptarget."
# --- check tcp process
local tcpprocess; tcpprocess=$( ini.value "tcp-process" )
if [ -n "$tcpprocess" ]; then
if ! netstat -tulpen 2>/dev/null | grep "^tcp.*:${tcpport} .*/${tcpprocess}" >/dev/null; then
# echo "No port tcp $tcpport available"
dbdetect._wd "... $tcpprocess not found for tcp ${tcpport}"
return 1
fi
dbdetect._wd "... tcp $tcpport is used by $tcpprocess."
fi
# --- check binaries
local binary; binary=$( ini.value "binary" )
if [ -n "${binary}" ]; then
for mybinary in $( echo "${binary}" | tr "," " " ); do
if ! j_requireBinary "$mybinary" 1 >/dev/null 2>&1; then
dbdetect._wd "... Missing binary: ${mybinary}"
return 1
fi
dbdetect._wd "... Binary: ${mybinary} was found"
done
fi
# --- check process
local process; process=$( ini.value "process" )
if [ -n "${process}" ]; then
if ! j_requireProcess "${process}" 1 >/dev/null; then
dbdetect._wd "... Missing process: ${process}"
return 1
fi
# if ! ps -eo command | grep -E "${process}" >/dev/null 2>&1; then
# dbdetect._wd "... Process ${process} was not found"
# return 1
# fi
dbdetect._wd "... Process ${process} was found"
fi
ini.set "$config" "set"
local value
local dbuser=$( ini.value "dbuser" )
local dbpassword=$( ini.value "dbpassword" )
for mykey in $( ini.keys )
do
# params = '--port={{tcp}} --password={{dbpassword}} --user={{dbuser}} --host={{tcp-target}}'
value="$( ini.value "$mykey" )"
value="${value//\{\{tcp\}\}/$tcpport}"
value="${value//\{\{tcp-target\}\}/$tcptarget}"
value="${value//\{\{dbuser\}\}/$dbuser}"
value="${value//\{\{dbpassword\}\}/$dbpassword}"
DBD_PARAMS[$mykey]="$value"
done
return 0
}
function dbdetect.getParams(){
echo "${DBD_PARAMS['params']}"
}
function dbdetect.runas(){
echo "${DBD_PARAMS['su']}"
}
SXYNTAX:
$( basename $0) -d Test all profiles with debug output
$( basename $0) mysql Test profiles matching 'mysql' only
"
# --------------------------------------------------------------------
# ----------------------------------------------------------------------
# MAIN
# ----------------------------------------------------------------------
echo
echo " --==##| POC * DATABASE DETECTOR |##==-- "
echo " --==##| DATABASE PROFILE DETECTOR |##==-- "
echo
dbdetect._wd
dbdetect._wd "------"
while [[ "$#" -gt 0 ]]; do case $1 in
-d|--debug) DBD_DEBUG=1;;
-h|--help) echo "$USAGE"; exit 0;;
*) if grep "^-" <<< "$1" >/dev/null ; then
echo; echo "ERROR: Unknown parameter: $1"; echo; _showHelp; exit 2
fi
break;
;;
esac; done
dbdetect._wd ">>>>>>>>>> $module"
for config in $(dbdetect.getConfigs); do
dbdetect._wd "------"
for config in $(dbdetect.getConfigs | grep "${1:-.}"); do
dbdetect._wd "----- $config"
if dbdetect.exists $config; then
echo "FOUND: $config"
Loading