minor shell improvements
[distro-setup] / brc
diff --git a/brc b/brc
index 9e368d471a21a93ec3d4786e2513c0f442f5be5f..37e09a0c13399224b748366482fc84b22f7a96ed 100644 (file)
--- a/brc
+++ b/brc
@@ -412,6 +412,39 @@ despace() {
   done
 }
 
+dig() {
+  command dig +nostats +nocmd "$@"
+}
+# Output with sections sorted, and removal of query id, so 2 dig outputs can be diffed.
+digsort() {
+  local sec
+  sec=
+  dig +nordflag "$@" | sed -r 's/^(;; ->>HEADER<<-.*), id: .*/\1/' | while read -r l; do
+    if [[ $l == [^\;]* ]]; then
+      sec+="$l"$'\n'
+    else
+      if [[ $sec ]]; then
+        printf "%s" "$sec" | sort
+        sec=
+      fi
+      printf "%s\n" "$l"
+    fi
+  done
+}
+# compare digs to the 2 servers
+# usage: digdiff @server1 @server2 DIG_ARGS
+# note: only the soa master nameserver will respond with
+# ra "recursive answer" flag. That difference is meaningless afaik.
+digdiff() {
+  local s1 s2
+  s1=$1
+  shift
+  s2=$1
+  shift
+  digsort $s1 "$@" | tee /tmp/digdiff
+  diff -u /tmp/digdiff <(digsort $s2 "$@")
+}
+
 dt() {
   date "+%A, %B %d, %r" "$@"
 }