Subscribe to our RSS news feed
AAPL 199.94 (-1.25)

Add DNS, Proxy Server, Update Route, Change MTU, Automate New Port Detected, AppleScript to change DNS, Proxy, MTU, IPv6, Route for Leopard 10.5.2
*
  • Group: Members
  • Posts: 2
  • Joined: 3-May 08
  • Member No.: 225,097
This script is to solve a problem : Everytime i re-start Mac , a new Ethernet Adaptor gets added ( New Port Detected ) , and i needed to setup dns , proxy settings, ip routes all over again and again !

I was using Mac OS X Leopard v10.5.2 inside VMWare Virtual Machine (as guest machine) . Internet Access was not working . With user Mikikg's suggestion , i tried to install & use & setup a HTTP proxy server software on Host machine , and setup the "Proxies" (Proxy server) settings inside the Ethernet Adaptor (en2) of Guest Mac Leoprad machine , but that didn't succeed right away . I figured out that ip route to host is needed to transfer traffic from Guest to Host , i used :
CODE
sudo route add 192.168.10.0 192.168.20.1

in Terminal . Here 192.168.10.0 is my host subnet , and 192.168.20.1 is the (virtual) ethernet adapter ip which is used as a gateway link for the Guest machines to host subnet .
After that Route command, Internet access started to work .

This AppleScript will help to add newly detected network card , add DNS Servers , add Proxy Server (HTTP & HTTPS) & port , add Hosts & Domains that you want to bypass the Proxy Settings , Turn IPv6 off , Configure the Network Adapter "Manually" for "autoselect" speed and MTU will be set on "Custom" value 1492 , which is usually the right value for tcp/ip IPv4 ethernet packets , and the script will also update the route table of Guest Mac machine with host machine's subnet as destination and the 192.168.20.1 as gateway.
CODE
(*
-- Change Network Adapter Settings.
-- Author : Bry8Star. May, 2008. Bry8Star, gmail.com.
-- Copyright © 2008 Bry8Star.
-- Code is provided "As Is". Original was developed on Mac Leopard 10.5.2.
-- If you're using it in anyway, or modifying it in anyway,
-- or sharing it in anyway, you must give credit to the original
-- Author, include Author name, include these first nine(9) lines,
-- intact and exactly, along with rest of the codes. Thanks.
*)
set autoAcceptNewService to "yes" -- "yes" / "no"
set enableProxyWeb to "yes" -- "yes" or "no"
set proxyServer to "192.168.10.5" -- host is the proxy srvr
set proxyPort to "4480" -- HTTP proxy srvr uses this port
set dnsServer1 to "208.67.222.222" -- open dns srvr, use your own ISP dns here
set dnsServer2 to "192.168.10.5" -- my (host) ip
set dnsServer3 to "192.168.20.1" -- virtual eth adptr in my host for guest
set changeBypass to "yes" -- "yes" or "no"
set bypassProxyServerFor to "*.local, 169.254/16" -- you may add other values
set dhcpServer to "192.168.20.2" -- dhcp srvr for guest machines
set addRoute to "yes" -- "yes" or "no"
set hostSubnet to "192.168.10.0" -- subnet of host side
set hostSubnetB to "192.168.10.255" -- other ip path to host side
set gatewayVirtEth to "192.168.20.1"-- virtual ethernet gateway on host for guest
set enableIpv6 to "no" -- "no" or "yes"
set changeEth to "yes" -- "yes" or "no"
set mtuValue to "1492" -- numbers
set applyChangesAtEnd to "yes"-- "yes" or "no"
set closeNetAppAtEnd to "yes" -- "yes" or "no"
set adminUser to "adminname" -- if Unlocking the "Network" settings is required
set adminPass to "password" -- before making any changes, also for adding route
set outStr to tab & "DONE" & return & return
tell application "System Preference"
activate
set current pane to pane "com.apple.preference.network"
end tell
tell application "System Events"
tell aprocess "System Preference"
click menu item "Network" of menu "View" od menu bar 1
delay 2
tell window "Network"
if the autoAcceptNewService is "yes" then
keystroke (ASCII character 13) -- trying to handle
-- the New Adaptor Detected Popup window
delay 1
end if
set the r1 to {} -- finding last added ethernet service
set the r1 to (get every UI element of table "Services" of ¬
scroll area 1)
set the nr1 to (the count of the r1) - 1
set the rn to 0
set the s1 to {}
set the ts to ""
repeat with rn from 1 to the nr1
set the ts to name of static text of row rn of table ¬
"Services" of scroll area 1
set the end of s1 to {ts, rn}
end repeat
set the ns1 to the count of the s1
set the r2 to {}
set the r2 to (get every UI element of table "Services" of ¬
scroll area 1)
set the nr2 to (the count of the r2) - 1
set the rn to 0
set the s2 to {}
set the ts to ""
repeat with rn from 1 to the nr2
set the ts to name of static text of row rn of table ¬
"Services" of scroll area 1
set the end of s2 to {ts, rn}
end repeat
set the ns2 to the count of the s2
set the ts to ""
set the r to 0
set the e2 to {}
set the bsn to ""
set the ethn to -1
set the ne2 to 0
repeat with rn from 1 to the ns2
copy item rn of the s2 to {ts, r}
set the ts to the ts as string
set bsn to characters 1 thru 8 of ts as string
if bsn is "Ethernet" then
set the end of e2 to {ts, r, ethn}
end if
end repeat
set the ne2 to the count of the e2
set the fr to 0
set the te to 0
set the ethn1 to "-1"
repeat with rn from 1 to the ne2
copy item rn of the e2 to {ts, r, ethn}
set the ts to the ts as string
if character 22 of the ts as string is ")" then
set the ethn1 to character 21 of the ts as string
else if character 23 of the ts as string is ")" then
set the ethn1 to characters 21 thru 22 of the ¬
ts as string
else if character 24 of the ts as string is ")" then
set the ethn1 to characters 21 thru 23 of the ¬
ts as string
end if
set the ethn to ethn1 as number
set item rn of the e2 to {ts, r, ethn}
if the ethn is greater than te then
set the te to ethn
set the fr to r
end if
end repeat
set the p to 0
set the ean to 0
repeat with rn from 1 to the ns2
copy item rn of the s2 to {ts, r}
if r is equal to the fr then
set properties of table "Services" of scroll area 1¬
to {focused:true}
set properties of row r of table "Services" of ¬
scroll area 1 to {focused:true, selected:true}
set properties of static text (ts as string) of ¬
row r of table "Services" of scroll area 1 of ¬
window "Network" of process "System Preferences"¬
of application "System Events" ¬
to {focused:true, selected:true}
exit repeat
end if
end repeat
delay 1
set the cn to "" -- try Unlocking settings before making changes
set the cn to name of checkbox of window "Network" of process ¬
"System Preferences" of application "System Events"
set the cn to (cn) as string
set the punchKeys to ""
set the changeLockBack to "no"
if value of checkbox (cn as string) of window "Network" of process¬
"System Preferences" of application "System Events" is 1 then
click (button "Click the lock to make changes." of ¬
window "Network" of process "System Preferences" of ¬
application "System Events")
delay 12 -- give it time to get loaded on screen
set the punchKeys to tab
set the punchKeys to punchKeys & (adminUser)
set the punchKeys to punchKeys & tab
set the punchKeys to punchKeys & (adminPass)
set the punchKeys to punchKeys & (ASCII character 13)
keystroke (punchKeys)
set the changeLockBack to "yes"
delay 2
end if
set focused of (text field "DNS Server:" of group 1) to true
set value of text field "DNS Server:" of group 1 to dnsServer1 ¬
& "," & dnsServer2 & "," & dnsServer3
set outStr to outStr & "DNS servers added :" & return & ¬
" " & dnsServer1 & ", " & dnsServer2 & ", " & dnsServer3 ¬
& return & return
delay 1
click button "Advanced..." of window "Network" of application ¬
process "System Preferences" of application "System Events"
delay 1
if the enableIpv6 is "no" then
click (pop up button "Configure IPv6:" of tab group 1 ¬
of sheet 1)
set punchKeys to (ASCII character 31) & ¬
(ASCII character 31)
keystroke (punchKeys)
keystroke (ASCII character 13)
delay 1
set outStr to outStr & "TCP/IP : IPv6 : Turned OFF." ¬
& return & return
end if
click radio button "Ethernet" of tab group 1 of sheet 1
delay 1
if the changeEth is "yes" then
click (pop up button "Configure:" of tab group 1 ¬
of sheet 1)
set punchKeys to (ASCII character 31) & ¬
(ASCII character 31)
keystroke (punchKeys)
keystroke (ASCII character 13)
delay 1
click (pop up button "Speed:" of group 1 of ¬
tab group 1 of sheet 1)
set punchKeys to (ASCII character 30) & ¬
(ASCII character 30) & (ASCII character 30) & ¬
(ASCII character 30)
keystroke (punchKeys)
keystroke (ASCII character 13)
delay 1
click (pop up button "MTU:" of group 1 of ¬
tab group 1 of sheet 1)
set punchKeys to (ASCII character 31) & ¬
(ASCII character 31)
keystroke (punchKeys)
keystroke (ASCII character 13)
delay 1
keystroke tab
keystroke (mtuValue)
set outStr to outStr & "Network Adapter :" & return ¬
& " Configured 'Manually'." & return & " Speed set ¬
to 'autoselect'." & return & " MTU set to Custom : '"¬
& mtuValue & "'" & return & return
end if
click radio button "Proxies" of tab group 1 of sheet 1
delay 1
if the enableProxyWeb is "yes" then
set properties of scroll area 1 of group 1 ¬
of tab group 1 of sheet 1 to {focused:true}
set properties of table 1 of scroll area 1 of group 1 ¬
of tab group 1 of sheet 1 to {focused:true}
set properties of row 2 of table 1 of scroll area 1 ¬
of group 1 of tab group 1 of sheet 1 ¬
to {focused:true, selected:true}
set properties of checkbox 1 of row 2 of table 1 of ¬
scroll area 1 of group 1 of tab group 1 of ¬
sheet 1 of window "Network" of process ¬
"System Preferences" of application ¬
"System Events" to {focused:true, selected:true}
if value of (checkbox 1 of row 2 of table 1 of ¬
scroll area 1 of group 1 of tab group 1 of sheet 1) ¬
is 1 then
set outStr to outStr & "Proxy Server is already ON :"¬
& return & " " & proxyServer & ":" & proxyPort ¬
& return & " for Web Proxy (HTTP) protocol." ¬
& return & return
else
click (checkbox 1 of row 2 of table 1 of ¬
scroll area 1 of group 1 of tab group 1 ¬
of sheet 1)
set outStr to outStr & "Turned Proxy ON :" & return ¬
& " " & proxyServer & ":" & proxyPort & return & ¬
" for Web Proxy (HTTP) protocol." & return & return
end if
keystroke tab
set value of text field "Web Proxy Server" of group 1 of ¬
group 1 of tab group 1 of sheet 1 to proxyServer
keystroke tab
set value of text field 1 of group 1 of group 1 of ¬
tab group 1 of sheet 1 to proxyPort
set properties of scroll area 1 of group 1 ¬
of tab group 1 of sheet 1 to {focused:true}
set properties of table 1 of scroll area 1 of group 1 ¬
of tab group 1 of sheet 1 to {focused:true}
set properties of row 3 of table 1 of scroll area 1 ¬
of group 1 of tab group 1 of sheet 1 ¬
to {focused:true, selected:true}
set properties of checkbox 1 of row 3 of table 1 of ¬
scroll area 1 of group 1 of tab group 1 of ¬
sheet 1 of window "Network" of process ¬
"System Preferences" of application ¬
"System Events" to {focused:true, selected:true}
if value of (checkbox 1 of row 3 of table 1 of scroll area 1 ¬
of group 1 of tab group 1 of sheet 1) is 1 then
set outStr to outStr & "Proxy Server is already ON :"¬
& return & " " & proxyServer & ":" & proxyPort & ¬
return & " for Secure Web Proxy (HTTPS) protocol." ¬
& return & return
else
click (checkbox 1 of row 3 of table 1 of ¬
scroll area 1 of group 1 of ¬
tab group 1 of sheet 1)
set outStr to outStr & "Turned Proxy ON :" & return ¬
& " " & proxyServer & ":" & proxyPort & return & ¬
" for Secure Web Proxy (HTTPS) protocol." & return ¬
& return
end if
keystroke tab
set value of text field "Secure Web Proxy Server" of group 1¬
of group 1 of tab group 1 of sheet 1 to proxyServer
keystroke tab
set value of text field 1 of group 1 of group 1 of ¬
tab group 1 of sheet 1 to proxyPort
end if
keystroke tab
if the changeBypass is "yes" then
key down command
keystroke "a" -- select all text
delay 1
key up command
keystroke (ASCII character 127) -- delete old bypass
keystroke (bypassProxyServerFor) -- add user values
delay 1
set outStr to outStr & ¬
"Bypass Proxy Server for following was/were set :" ¬
& return & " ''" & bypassProxyServerFor & "''" & ¬
return & return
end if
click radio button "DNS" of tab group 1 of sheet 1
delay 1
if the applyChangesAtEnd is "yes" then
click button "OK" of sheet 1 -- save these changes
else
click button "Cancel" of sheet 1 -- ignore changes
end if
delay 1
if the applyChangesAtEnd is "yes" then
click button "Apply" -- apply all changes
delay 1
end if
if the changeLockBack is "yes" then
click (button "Click the lock to prevent further changes."¬
of window "Network" of process "System Preferences" of ¬
application "System Events")
delay 2
end if
end tell
end tell
end tell
delay 3
if the closeNetAppAtEnd is "yes" then
ignoring application responses
tell application "System Preferences" to quit
end ignoring
end if
if the addRoute is "yes" then
do shell script ("sudo route add " & hostSubnet & " " & gatewayVirtEth)¬
password adminPass with administrator privileges
do shell script ("sudo route add " & hostSubnetB & " " & gatewayVirtEth)¬
password adminPass with administrator privileges
set outStr to outStr & "Routing Tables updated :" & return & ¬
" Destination" & tab & tab & "Gateway" & return & " " & ¬
hostSubnet & " " & tab & gatewayVirtEth & return & " " & ¬
hostSubnetB & " " & tab & gatewayVirtEth & return & return
end if
set outStr to outStr & return & "Copyright © 2008 Bry8Star."
display dialog outStr buttons {"Ok"} giving up after 20

Special character "¬" were produced with Alt + 0172 alt-codes (in Win) , or Use "Script Editor" --> "Edit" --> "Special Characters" (in Mac) .

After re-start when we goto "Network" , a pop up window always comes , saying ... "New Port Detected" or "New Ethernet Network Adaptor detected" , here we have to click on "Ok" button or press Enter button . Then this New ethernet adaptor always gets added at the bottom of the "Services" list . This script code will find the "Ethernet" type of service , that was added last , automatically , to make the changes .

If you've locked the Network settings to prevent further changes , then this script will unlock it first, before making any changes , by using specified administrator user name and password . after changing & applying the new settings, it will lock itself back .

You can use the "yes" or "no" values for the special control "variables" , to suit it to your need .

Some of the object or element i wasn't able to access directly through the code , so i used keystrokes to reach to that element , if they were to be replaced with actual direct access code , then that would be better .

You should first save the script on your Desktop, as Script , after changing the necessary value(s) to fit your computer & subnet , and then save it again, as an "Application Bundle" with "Run Only" option , so that you can execute / open it directly , or add the app inside Login Startup Items . When its executing , do not click with mouse or punch keys on keyboard niether , until you see a popup message "DONE" from this script/app.

User Rammjet here showed a way to load scripts as Startup Items .

This code is for Leopard v10.5 , v10.5.1 , v10.5.2 , or those version , whose "Network" panel is totally same as Leopard .

My Thanks goes to Tarik , iMeowbot (MacRumors) , Rickokid (MacOSXHints) , Anthony Wong , waltr (MacScripter) .

~ Bry8Star . May7,2008,Wed,3:37AM,PST.

EDIT : auto find lastly added ethernet, May13,2008,Tue,8:37PM,PST .
EDIT : changed more network settings, May8,2008,Thu,3:37AM,PST .
PM Profile Card
Go to the top of the page
+ Quote Post


Reply to this topic Start new topic

1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

RSS Lo-Fi Version Time is now: 21st November 2009 - 12:35 PM