Hi all,
at my client we have a zoo of MacPro's Ethernet , MacBooks with Thunderbolt-Ethernet and Thunderbolt-Displays.
While we're upgrading the Macs to latest Yosemite (ElCapitan is not an option because of the productive environment), clients often "forget" the Network-Settings (DNS-Servers and Proxy).
Normally, we have three locations:
Client_Net: Only Ethernet, Thunderbolt-Ethernet or Display-Ethernet enabled Special DNS and Proxy
Client_WIFI: Only WIFI enabled Special DNS and Proxy
WIFI-Free Any Adapter can be active and can be used (WIFI, Thunderbolt-Ethernet,...) No special settings.
My question:
How to put it with "networksetup" into a script that these networksettings/locations are with a firstboot-script are enabled again?
Thank you! Holger
Best answer by Chris
Hi Holger,
here's a redacted version of the networksetup script i use, you may be able to adjust it to your needs:
#! /bin/sh
####################################################################################################
#hardcoded variables
usb="USB Ethernet"
display="Display Ethernet"
tbolt="Thunderbolt Ethernet"
wired="Ethernet"
wireless="Wi-Fi"
btDUN="Bluetooth DUN"
btPAN="Bluetooth PAN"
firewire="FireWire"
####################################################################################################
#define proxy servers
proxy="proxy.company.net"
####################################################################################################
#detect network interfaces
usbAdapter=`/usr/sbin/networksetup -listallhardwareports | grep "Hardware Port: USB Ethernet"`
displayAdapter=`/usr/sbin/networksetup -listallhardwareports | grep "Hardware Port: Display Ethernet"`
tboltAdapter=`/usr/sbin/networksetup -listallhardwareports | grep "Hardware Port: Thunderbolt Ethernet"`
wiredAdapter=`/usr/sbin/networksetup -listallhardwareports | grep "Hardware Port: Ethernet"`
wifiAdapter=`/usr/sbin/networksetup -listallhardwareports | grep "Hardware Port: Wi-Fi"`
btDUNAdapter=`/usr/sbin/networksetup -listallhardwareports | grep "Hardware Port: Bluetooth DUN"`
btPANAdapter=`/usr/sbin/networksetup -listallhardwareports | grep "Hardware Port: Bluetooth PAN"`
firewireAdapter=`/usr/sbin/networksetup -listallhardwareports | grep "Hardware Port: FireWire"`
####################################################################################################
#######
#Create new Location Client_Net
#######
networksetup -createlocation "Client_Net" populate
#Switch to Location Client_Net
networksetup -switchtolocation "Client_Net"
##############
## Ethernet ##
##############
if [ "$wiredAdapter" != "" ]; then
/usr/sbin/networksetup -setdhcp "$wired"
/usr/sbin/networksetup -setv6off "$wired"
/usr/sbin/networksetup -setwebproxy "$wired" "$proxy" 8080
/usr/sbin/networksetup -setftpproxy "$wired" "$proxy" 8080
/usr/sbin/networksetup -setstreamingproxy "$wired" "$proxy" 8080
/usr/sbin/networksetup -setgopherproxy "$wired" "$proxy" 8080
/usr/sbin/networksetup -setsocksfirewallproxy "$wired" "$proxy" 8080
/usr/sbin/networksetup -setsecurewebproxy "$wired" "$proxy" 8080
/usr/sbin/networksetup -setproxybypassdomains "$wired" *.local 169.254/16 whatever.company.net
/usr/sbin/networksetup -setsearchdomains "$wired" company.net whatever.net
/usr/sbin/networksetup -setpassiveftp "$wired" on
fi
##################
## USB Ethernet ##
##################
if [ "$usbAdapter" != "" ]; then
/usr/sbin/networksetup -setdhcp "$usb"
/usr/sbin/networksetup -setv6off "$usb"
/usr/sbin/networksetup -setwebproxy "$usb" "$proxy" 8080
/usr/sbin/networksetup -setftpproxy "$usb" "$proxy" 8080
/usr/sbin/networksetup -setstreamingproxy "$usb" "$proxy" 8080
/usr/sbin/networksetup -setgopherproxy "$usb" "$proxy" 8080
/usr/sbin/networksetup -setsocksfirewallproxy "$usb" "$proxy" 8080
/usr/sbin/networksetup -setsecurewebproxy "$usb" "$proxy" 8080
/usr/sbin/networksetup -setproxybypassdomains "$usb" *.local 169.254/16 whatever.company.net
/usr/sbin/networksetup -setsearchdomains "$usb" company.net whatever.net
/usr/sbin/networksetup -setpassiveftp "$usb" on
fi
#####################
## Display Adapter ##
#####################
if [ "$displayAdapter" != "" ]; then
/usr/sbin/networksetup -setdhcp "$display"
/usr/sbin/networksetup -setv6off "$display"
/usr/sbin/networksetup -setwebproxy "$display" "$proxy" 8080
/usr/sbin/networksetup -setftpproxy "$display" "$proxy" 8080
/usr/sbin/networksetup -setstreamingproxy "$display" "$proxy" 8080
/usr/sbin/networksetup -setgopherproxy "$display" "$proxy" 8080
/usr/sbin/networksetup -setsocksfirewallproxy "$display" "$proxy" 8080
/usr/sbin/networksetup -setsecurewebproxy "$display" "$proxy" 8080
/usr/sbin/networksetup -setproxybypassdomains "$display" *.local 169.254/16 whatever.company.net
/usr/sbin/networksetup -setsearchdomains "$display" company.net whatever.net
/usr/sbin/networksetup -setpassiveftp "$display" on
fi
#########################
## Thunderbolt Adapter ##
#########################
if [ "$tboltAdapter" != "" ]; then
/usr/sbin/networksetup -setdhcp "$tbolt"
/usr/sbin/networksetup -setv6off "$tbolt"
/usr/sbin/networksetup -setwebproxy "$tbolt" "$proxy" 8080
/usr/sbin/networksetup -setftpproxy "$tbolt" "$proxy" 8080
/usr/sbin/networksetup -setstreamingproxy "$tbolt" "$proxy" 8080
/usr/sbin/networksetup -setgopherproxy "$tbolt" "$proxy" 8080
/usr/sbin/networksetup -setsocksfirewallproxy "$tbolt" "$proxy" 8080
/usr/sbin/networksetup -setsecurewebproxy "$tbolt" "$proxy" 8080
/usr/sbin/networksetup -setproxybypassdomains "$tbolt" *.local 169.254/16 whatever.company.net
/usr/sbin/networksetup -setsearchdomains "$tbolt" company.net whatever.net
/usr/sbin/networksetup -setpassiveftp "$tbolt" on
fi
################################
## Disable non-wired adapters ##
################################
if [ "$wifiAdapter" != "" ]; then
/usr/sbin/networksetup -setnetworkserviceenabled "$wireless" off
fi
if [ "$btDUNAdapter" != "" ]; then
/usr/sbin/networksetup -setnetworkserviceenabled "$btDUN" off
fi
if [ "$btPANAdapter" != "" ]; then
/usr/sbin/networksetup -setnetworkserviceenabled "$btPAN" off
fi
if [ "$firewireAdapter" != "" ]; then
/usr/sbin/networksetup -setnetworkserviceenabled "$firewire" off
fi
####################################################################################################
#######
#Create new Location Client_WIFI
#######
networksetup -createlocation "Client_WIFI" populate
#Switch to Location Client_WIFI
networksetup -switchtolocation "Client_WIFI"
# Adapter settings as above, with desired adjustments
####################################################################################################
#######
#Create new Location WIFI-Free
#######
networksetup -createlocation "WIFI-Free" populate
#Switch to Location WIFI-Free
networksetup -switchtolocation "WIFI-Free"
# Adapter settings as above, with desired adjustments
####################################################################################################
####################################################################################################
#Switch back to Location Client_Net
networksetup -switchtolocation "Client_Net"
exit 0
Depending on in which scenario you use it, it might be useful to blow away any locations that existed previously before running this (or add a couple lines to the beginning to take care of this)