From b04fab35de2f165ac409951f5f4c5bbd896e274f Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Mon, 30 Jul 2012 15:39:17 -0700 Subject: [PATCH] Factorize get-current-resolvers.sh --- CU2/check-network-change.sh | 25 ++------------- CU2/get-current-resolvers.sh | 61 +++++++++++++----------------------- 2 files changed, 24 insertions(+), 62 deletions(-) diff --git a/CU2/check-network-change.sh b/CU2/check-network-change.sh index 5111bd9..47dc180 100755 --- a/CU2/check-network-change.sh +++ b/CU2/check-network-change.sh @@ -1,5 +1,4 @@ -#! /bin/ksh -# /Library/Preferences/SystemConfiguration +#! /bin/sh . ./common.inc @@ -8,27 +7,7 @@ DHCP_DNS_FILE="${STATES_DIR}/dhcp-dns" AIRPORT_TOOL="/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport" mkdir -p "$STATES_DIR" || exit 1 - -ifs=$(ifconfig -a | \ - awk '/^[^ :]*:/ { sub(/:.*$/,empty); iface=$0 } /status: active/ { print iface }') -ifs=$(echo $ifs) - -typeset -A found -ips="" -for i in $ifs; do - ips_i=$(ipconfig getpacket "$i" 2> /dev/null | fgrep 'domain_name_server' | \ - sed -e 's/^.*{//' -e 's/,/ /g' -e 's/}//' ) - for ip_i in $ips_i; do - if [ ! ${found["$ip_i"]} ]; then - if [ "$ips" ]; then - ips="$ips " - fi - ips="$ips$ip_i" - found["$ip_i"]=1 - fi - done -done - +ips=$(./get-current-resolvers.sh) echo "$ips" > "$DHCP_DNS_FILE" ssid=$("$AIRPORT_TOOL" -I 2>&1 | fgrep '[^B]SSID: ') diff --git a/CU2/get-current-resolvers.sh b/CU2/get-current-resolvers.sh index 05b496a..f342dd5 100755 --- a/CU2/get-current-resolvers.sh +++ b/CU2/get-current-resolvers.sh @@ -1,42 +1,25 @@ -#! /bin/sh +#! /bin/ksh -get_interface() { - route get default | while read line; do - case "$line" in - interface:*) echo $line | sed 's/ *interface: *//' ; exit 0 ;; - *) ;; - esac +. ./common.inc + +ifs=$(ifconfig -a | \ + awk '/^[^ :]*:/ { sub(/:.*$/,empty); iface=$0 } /status: active/ { print iface }') +ifs=$(echo $ifs) + +typeset -A found +ips="" +for i in $ifs; do + ips_i=$(ipconfig getpacket "$i" 2> /dev/null | fgrep 'domain_name_server' | \ + sed -e 's/^.*{//' -e 's/,/ /g' -e 's/}//' ) + for ip_i in $ips_i; do + if [ ! ${found["$ip_i"]} ]; then + if [ "$ips" ]; then + ips="$ips " + fi + ips="$ips$ip_i" + found["$ip_i"]=1 + fi done - exit 1 -} - -get_hardware_port() { - wanted_interface="$1" - networksetup -listallhardwareports | while read line; do - case "$line" in - Hardware\ Port:\ *) - hardware_port=$(echo "$line" | sed 's/ *Hardware Port: *//') - ;; - Device:\ *) - interface=$(echo "$line" | sed 's/ *Device: *//') - if [ x"$interface" = x"$wanted_interface" ]; then - echo $hardware_port - exit 0 - fi - ;; - esac - done - exit 1 -} - -interface=$(get_interface) -hardware_port=$(get_hardware_port "$interface") -name_servers=$(networksetup -getdnsservers "$hardware_port" 2> /dev/null) -case "$name_servers" in - *any\ DNS\ Servers*) - name_servers=$(ipconfig getpacket "$interface" 2> /dev/null | fgrep 'domain_name_server' | \ - sed -e 's/^.*{//' -e 's/,/ /g' -e 's/}//' ) - ;; -esac -echo $name_servers +done +echo "$ips"