From bbbb1f57f5b69f80505b4e3c29bcc0f17e5a82fd Mon Sep 17 00:00:00 2001 From: Kroese Date: Sat, 22 Apr 2023 04:13:26 +0200 Subject: [PATCH] Better resolv.conf parsing Fixes the error: dnsmasq: bad command line options: bad IP address --- run/network.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/run/network.sh b/run/network.sh index 63cfed2..f04409b 100644 --- a/run/network.sh +++ b/run/network.sh @@ -133,11 +133,17 @@ configureNAT () { NET_OPTS="-netdev tap,ifname=${VM_NET_TAP},script=no,downscript=no,id=hostnet0" # Build DNS options from container /etc/resolv.conf - mapfile -t nameservers < <(grep '^nameserver' /etc/resolv.conf | sed 's/nameserver //') - searchdomains=$(grep '^search' /etc/resolv.conf | sed 's/search //' | sed 's/ /,/g') + + if [ "$DEBUG" = "Y" ]; then + echo "/etc/resolv.conf:" && echo && cat /etc/resolv.conf && echo + fi + + mapfile -t nameservers < <(grep '^nameserver' /etc/resolv.conf | sed 's/\t/ /g' | sed 's/nameserver //' | sed 's/ //g') + searchdomains=$(grep '^search' /etc/resolv.conf | sed 's/\t/ /g' | sed 's/search //' | sed 's/#.*//' | sed 's/\s*$//g' | sed 's/ /,/g') domainname=$(echo "$searchdomains" | awk -F"," '{print $1}') for nameserver in "${nameservers[@]}"; do + nameserver=$(echo "$nameserver" | sed 's/#.*//' ) if ! [[ "$nameserver" =~ .*:.* ]]; then [[ -z "$DNS_SERVERS" ]] && DNS_SERVERS="$nameserver" || DNS_SERVERS="$DNS_SERVERS,$nameserver" fi