1) วิธีแก้ปัญหาอย่างง่าย: ใช้Sidekickเพื่อเปลี่ยนตำแหน่งเครือข่ายของคุณโดยอัตโนมัติ (และการตั้งค่าอื่น ๆ ทั้งหมด) ขึ้นอยู่กับเครือข่ายที่คุณใช้งาน
ด้านข้าง:เพื่อนสนิทเป็นแอปเวอร์ชันใหม่ที่ก่อนหน้านี้รู้จักกันในชื่อNetworkLocation.appแต่ได้มีการเขียนใหม่ทั้งหมด ฉันเป็นผู้ทดสอบรุ่นเบต้าสำหรับแอพ แต่ฉันก็เป็นลูกค้าที่จ่ายเงินอยู่ด้วยและไม่มีการเชื่อมต่ออื่น ๆ กับแอพ
แอพมีราคา $ 29 แต่มีตัวอย่างที่คุณสามารถใช้เพื่อดูวิธีการทำงานก่อนที่คุณจะซื้อ แนะนำเป็นอย่างยิ่ง
2) หากคุณต้องการโซลูชันฟรีคุณสามารถเขียนเชลล์สคริปต์ที่ทำงานผ่าน launchd ก่อนอื่นคุณต้องมีไฟล์ plist ก่อนดังนี้:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AbandonProcessGroup</key>
<true/>
<key>Label</key>
<string>localhost.networkmonitor</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/your/shell/script.sh</string>
</array>
<key>StartInterval</key>
<integer>120</integer>
<key>WatchPaths</key>
<array>
<string>/Library/Preferences/SystemConfiguration/</string>
</array>
</dict>
</plist>
เปลี่ยน/path/to/your/shell/script.sh
เป็นเส้นทางอะไรก็ได้ที่คุณทำกับเชลล์สคริปต์ของคุณ (และตรวจสอบให้แน่ใจว่าสคริปต์นั้นทำงานได้):
chmod 755 /path/to/your/shell/script.sh
ส่วนที่ยากคือสคริปต์ของตัวเอง มีสองวิธีในการทำสิ่งนี้:
"ทาง SSID"
โดยทั่วไปคุณจะต้องค้นหาวิธีการเขียนโปรแกรมเพื่อบอกเวลาที่คุณอยู่ที่บ้าน (เช่นเมื่อคุณต้องการใช้ PPPoE) และเมื่อคุณไม่ต้องการ ง่ายที่สุดวิธีที่จะทำคือการหาที่เครือข่าย Wi-Fi ที่คุณอยู่บน
หมายเหตุ:ฉันจะสมมติว่าคุณได้ตั้งค่าตำแหน่งเครือข่ายใหม่ที่เรียกว่า "PPPOE" ที่คุณต้องการใช้เมื่อคุณอยู่ที่บ้านซึ่งต่างจาก "Automatic" ทั่วไปซึ่งจะใช้ที่อื่น
ส่วนแรกของสคริปต์อาจมีลักษณะเช่นนี้:
#!/bin/sh
# Apple provides a utility called 'airport' but it's buried outside of the normal $PATH
# so you'll have to call it directly (or link it to somewhere in your $PATH using 'ln -s')
# this is the correct path for Snow Leopard and Lion. I think it had a different path
# in earlier versions of OS X but I'm not sure
AIRPORT='/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport'
# get the SSID of the network you are connected to
SSID=`${AIRPORT} -I | awk -F": " '/ SSID:/{print $NF}'`
จากนั้นคุณต้องดำเนินการต่าง ๆ ตาม SSID ซึ่งจะมีลักษณะเช่นนี้ (เปลี่ยน 'mySSID' เป็น SSID ที่บ้านของคุณ)
if [ "$SSID" = "mySSID" ]
then
# Select your 'PPPOE' network location (or whatever you called it)
scselect PPPOE
else
# If we are not on that Wi-Fi network, select the default 'Automatic' network location
scselect Automatic
fi
หากคุณไม่ได้มีบ้านเครือข่าย Wi-Fi แล้วคุณจะต้องมองหาการขาดของ SSID ซึ่งอาจมีลักษณะเช่นนี้
if [ "$SSID" = "" ]
then
# no Wi-Fi network found, let's assume that we are at home
scselect PPPOE
else
# if there is a Wi-Fi network, let's use the 'Automatic' network location
scselect Automatic
fi
exit 0
# (End of script)
ข้อผิดพลาดที่อาจเกิดขึ้น: เมื่อคอมพิวเตอร์เริ่ม 'ปลุก' ครั้งแรกมันจะใช้เวลาสองสามวินาทีในการเชื่อมต่อกับเครือข่าย Wi-Fi ดังนั้นคุณอาจต้องเพิ่มคำสั่ง 'sleep' ในนั้นเพื่อหลีกเลี่ยงการเปลี่ยนตำแหน่งก่อนที่ข้อมูลเครือข่ายทั้งหมดจะอัปเดต .
"อีเธอร์เน็ต vs Wi-Fi Way"
สำหรับวัตถุประสงค์ของการสนทนานี้ "Ethernet" หมายถึง "คอมพิวเตอร์เสียบเข้ากับเครือข่ายด้วยสายเคเบิลจริง"
หากคุณใช้อีเธอร์เน็ตที่บ้านตัวเลือกอื่นคือปิดใช้งานพอร์ตอีเธอร์เน็ตของคุณเมื่อไม่ได้ใช้งาน (ซึ่งฉันถือว่าหมายความว่า PPPOE จะไม่พยายามเชื่อมต่อ แต่อาจเป็นข้อสันนิษฐานที่ไม่ถูกต้อง)
ฉันได้เขียนสคริปต์ที่สามารถทำได้ซึ่งคุณสามารถหาได้ที่นี่: http://dl.dropbox.com/u/18414/ase/29227/wired-no-wifi.shซึ่งคุณสามารถใช้กับ launchd ได้
โปรดทราบว่าสคริปต์สันนิษฐานว่าพอร์ต Ethernet ของคุณคือ en0 และพอร์ต Wi-Fi ของคุณคือ en1
บันทึกการเปิดตัว
ฉันคิดว่าคุณรู้ว่าควรเก็บ plist สำหรับ launchd ไว้~/Library/LaunchAgents
และหลังจากคุณเพิ่มอันใหม่คุณต้องออกจากระบบ / เข้าสู่ระบบหรือใช้launchctl load
ดังนี้:
launchctl load ~/Library/LaunchAgents/YourLaunchdFileHere.plist
อย่างจริงจังว่าลองเพื่อนสนิท
ทั้งหมดในทันทีที่ $ 30 ดูค่อนข้างถูกใช่มั้ย -?
ใช่คุณสามารถมองออกไปและทำสิ่งนี้ในบรรทัดคำสั่ง แต่เพื่อนสนิทสามารถทำสิ่งนี้และอื่น ๆ อีกมากมายและอื่น ๆ อีกมากมายได้อย่างง่ายดาย นอกจากคุณจะยากจนราคาถูกและ / หรือโง่เง่าฉันขอแนะนำอย่างมากว่าlaunchd
- แต่ฉันยังคงรักที่จะได้รับ "ภายใต้ประทุน" และคนจรจัดกับสิ่งนี้