static usb ethnet addresses
[automated-distro-installer] / chost
diff --git a/chost b/chost
index 9fa57d07db3e997ab955db6dfa6a12ca3327a81d..204637b003852d21d7c661b966f41e9a69d73ae5 100755 (executable)
--- a/chost
+++ b/chost
@@ -7,8 +7,17 @@ set -eE -o pipefail
 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
 
 host=$1
-addr=$(host $host)
-addr=${addr##* }
+# ||: because if we are using 2+ resolvers, 1 may fail, causing error, but we still get
+# a valid address and we just use that
+addr=$(host $host | sed -rn 's/^\S+ has address //p;T;q' ||:)
 h=$(host $addr)
+case $h in
+  *"no PTR record")
+    echo "error: chost: $h" >&2
+    exit 1
+    ;;
+esac
 h=${h##* }
-echo ${h%%.*}
+# trailing dot in a hostname will mess up rsync
+h=${h%.}
+echo $h