From 2c6f18c9d837c837ef239e817a92490461335c6c Mon Sep 17 00:00:00 2001 From: "Hahn Axel (hahn)" <axel.hahn@iml.unibe.ch> Date: Tue, 13 Sep 2022 16:51:32 +0200 Subject: [PATCH] add search for ip address; fix cname as 1st param --- README.md | 11 ++++++----- dns-search.sh | 27 +++++++++++++++++++-------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 2146342..fe555ff 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Search for aliases and hosts. Search for hostnames or aliases in Infoblox API It uses dns-api.sh and adds the return field for aliases. -SYNTAX: dns-search.sh [name|alias|cname] REGEX +SYNTAX: dns-search.sh [name|alias|cname|ipv4addr] REGEX EXAMPLES: @@ -50,13 +50,14 @@ The search supports regex: dns-search.sh name "^(connector|examinator).*measured.stage" (4) -Lazy mode: do not add name or alias or cname to start 3 requests to search +search for an IP - use "ipv4addr" as 1st parameter + dns-search.sh ipv4addr .79.30 + +(5) +Lazy mode: do not add name or alias or cname to start 4 requests to search in all object types dns-search.sh ufive -Search for hostnames or aliases in Infoblox API -It uses dns-api.sh and adds the return field for aliases. - ``` ### dns-api.sh diff --git a/dns-search.sh b/dns-search.sh index cf445d9..932c51e 100755 --- a/dns-search.sh +++ b/dns-search.sh @@ -9,8 +9,10 @@ # 2022-03-01 v1.1 <axel.hahn@iml.unibe.ch> fix usage with 1st param "name" # 2022-03-03 v1.2 <axel.hahn@iml.unibe.ch> no param: 2 searches in name and alias # 2022-06-14 v1.3 <axel.hahn@iml.unibe.ch> added search for cname objects; debug comments are written to stderr +# 2022-09-13 v1.4 <axel.hahn@iml.unibe.ch> add search for ip address; fix cname as 1st param # ====================================================================== +returnFields='&_return_fields%2B=aliases,ttl' # ---------------------------------------------------------------------- # HELP @@ -21,7 +23,7 @@ cat <<EOH Search for hostnames or aliases in Infoblox API It uses dns-api.sh and adds the return field for aliases. -SYNTAX: dns-search.sh [name|alias|cname] REGEX +SYNTAX: dns-search.sh [name|alias|cname|ipv4addr] REGEX EXAMPLES: @@ -39,7 +41,11 @@ The search supports regex: dns-search.sh name "^(connector|examinator).*measured.stage" (4) -Lazy mode: do not add name or alias or cname to start 3 requests to search +search for an IP - use "ipv4addr" as 1st parameter + dns-search.sh ipv4addr .79.30 + +(5) +Lazy mode: do not add name or alias or cname to start 4 requests to search in all object types dns-search.sh ufive @@ -51,7 +57,7 @@ fi # MAIN # ---------------------------------------------------------------------- mytype= -if echo "$1" | grep -E '^(name|alias|cname)$' >/dev/null +if echo "$1" | grep -E '^(name|alias|cname|ipv4addr)$' >/dev/null then mytype=$1 shift 1 @@ -62,16 +68,21 @@ mysearch=$1 # ---------------------------------------------------------------------- ->&2 echo "; === DNS SEARCH" +>&2 echo ";" +>&2 echo "; === INFOBLOX DNS SEARCH" +>&2 echo ";" >&2 echo "; search for type : $mytype" >&2 echo "; search regex : $mysearch" >&2 echo ";" if [ -n "$mytype" ]; then - "$( dirname $0 )"/dns-api.sh GET "/record:host?${mytype}~=${mysearch}&_return_fields%2B=aliases" + test "$mytype" = "cname" || "$( dirname $0 )"/dns-api.sh GET "/record:host?${mytype}~=${mysearch}${returnFields}" + test "$mytype" = "cname" && "$( dirname $0 )"/dns-api.sh GET "/record:cname?name~=${mysearch}&_return_fields%2B=ttl" else - "$( dirname $0 )"/dns-api.sh GET "/record:host?name~=${mysearch}&_return_fields%2B=aliases" - "$( dirname $0 )"/dns-api.sh GET "/record:host?alias~=${mysearch}&_return_fields%2B=aliases" - "$( dirname $0 )"/dns-api.sh GET "/record:cname?name~=${mysearch}" + for mytype in name alias ipv4addr + do + "$( dirname $0 )"/dns-api.sh GET "/record:host?${mytype}~=${mysearch}${returnFields}" + done + "$( dirname $0 )"/dns-api.sh GET "/record:cname?name~=${mysearch}&_return_fields%2B=ttl" fi # ---------------------------------------------------------------------- \ No newline at end of file -- GitLab