Skip to content

Instantly share code, notes, and snippets.

@Jeff2Ma
Last active August 19, 2019 05:17
Show Gist options
  • Save Jeff2Ma/41e84e09f7189dd5f24a to your computer and use it in GitHub Desktop.
Save Jeff2Ma/41e84e09f7189dd5f24a to your computer and use it in GitHub Desktop.
Automatic proxy configuration set pac file with applescript & shell script http://devework.com/automatic-proxy-configuration-pac-applescript.html
tell application "System Events"
tell network preferences
do shell script "scselect 'Dorm'"
do shell script "sudo networksetup -setairportpower AirPort on" user name "用户名" password "密码" with administrator privileges
do shell script "open /Applications/Shad**socksX.app" user name “用户名" password "密码" with administrator privileges
end tell
end tell
tell application “Shad**socksX"
quit
end tell
tell application "System Events"
tell network preferences
do shell script "scselect 'Office'"
do shell script "sudo networksetup -setairportpower AirPort on" user name “用户名" password "密码" with administrator privileges
do shell script "/Users/name/documents/setpac.sh" user name “用户名" password "密码" with administrator privileges
end tell
end tell
#!/bin/sh
####################################################################################################
#
# More information: https://macmule.com/2014/12/07/how-to-change-the-automatic-proxy-configuration-url-in-system-preferences-via-a-script/
#
# GitRepo: https://github.com/macmule/setAutomaticProxyConfigurationURL
#
# License: http://macmule.com/license/
#
####################################################################################################
# HARDCODED VALUES ARE SET HERE
autoProxyURL=“PAC 文件路径"
# CHECK TO SEE IF A VALUE WAS PASSED FOR $4, AND IF SO, ASSIGN IT
if [ "$4" != "" ] && [ "$autoProxyURL" == "" ]; then
autoProxyURL=$4
fi
# Detects all network hardware & creates services for all installed network hardware
/usr/sbin/networksetup -detectnewhardware
IFS=$'\n'
#Loops through the list of network services
for i in $(networksetup -listallnetworkservices | tail +2 );
do
# Get a list of all services beginning 'Ether' 'Air' or 'VPN' or 'Wi-Fi'
# If your service names are different to the below, you'll need to change the criteria
if [[ "$i" =~ 'Ether' ]] || [[ "$i" =~ 'Air' ]] || [[ "$i" =~ 'VPN' ]] || [[ "$i" =~ 'Wi-Fi' ]] ; then
autoProxyURLLocal=`/usr/sbin/networksetup -getautoproxyurl "$i" | head -1 | cut -c 6-`
# Echo's the name of any matching services & the autoproxyURL's set
echo "$i Proxy set to $autoProxyURLLocal"
# If the value returned of $autoProxyURLLocal does not match the value of $autoProxyURL for the interface $i, change it.
if [[ $autoProxyURLLocal != $autoProxyURL ]]; then
/usr/sbin/networksetup -setautoproxyurl $i $autoProxyURL
echo "Set auto proxy for $i to $autoProxyURL"
fi
fi
# Enable auto proxy once set
/usr/sbin/networksetup -setautoproxystate "$i" on
echo "Turned on auto proxy for $i"
done
unset IFS
# Echo that we're done
echo "Auto proxy present, correct & enabled for all targeted interfaces"
@Jeff2Ma
Copy link
Author

Jeff2Ma commented Jul 13, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment