diff --git a/README.md b/README.md index 2146342eb61cd502016e1682ec48a721f8a1d596..fe555ff2a4f39494c5e55dc17a5ce1434ad8035f 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 cf445d9b1601bd1b68014a1a147ad720302404eb..932c51efb3fcaefbbde0623e2a164b264c4c9521 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