diff --git a/detector.sh b/detector.sh index 4d032b6cd00d07a17c9d37fc03c4c5d21ad2a432..7c575744e7c5f953ff6f679511ea9bcc0a0d8d48 100755 --- a/detector.sh +++ b/detector.sh @@ -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"