Skip to content
Snippets Groups Projects
Commit ca2c6889 authored by Hahn Axel (hahn)'s avatar Hahn Axel (hahn)
Browse files

update detector

parent f96049ca
No related branches found
No related tags found
1 merge request!129Db Profiles
......@@ -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"
}
function dbdetect.getType(){
basename "$1" | cut -d "_" -f 1 | sed "s,\.ini$,,"
}
function dbdetect.getProfile(){
basename "$1" | cut -d "_" -f 1- | sed "s,\.ini$,,"
}
USAGE="Detect profiles for databases which are located in
$DBD_BASEDIR.
function dbdetect.exists(){
local _config="$1"
For detected profiles it shows its used parameters.
This script helps you to define / verify custom profiles.
DBD_PARAMS=
SYNTAX: $( basename $0) [OPTIONS] [FILTER]
local _found=0
OPTIONS:
-d|--debug show debug information
-h|--help Show this help
# set file and inisection we read values from
ini.set "$_config" "detect"
PARAMETERS:
FILTER a string / regex to filter profilenames.
# --- 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"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment