PPPoE เชื่อมต่ออัตโนมัติเมื่อไม่ได้เสียบปลั๊ก


2

ฉันมีการเชื่อมต่ออินเทอร์เน็ตแบบ PPPoE ที่ฉันใช้กับ Macbook Pro ของฉัน

มีช่องทำเครื่องหมายในการตั้งค่าที่อนุญาตให้เชื่อมต่อใหม่โดยอัตโนมัติเมื่อจำเป็น - ซึ่งเป็นสิ่งที่ดี อย่างไรก็ตามระบบไม่ฉลาดพอที่จะหยุดพยายามเมื่อฉันถอดสายเคเบิลอีเธอร์เน็ต

เมื่อฉันถอดปลั๊กอีเธอร์เน็ตออกไปมันจะบอกฉันทุก ๆ 5 นาทีว่าไม่สามารถเชื่อมต่อได้ จนกว่าฉันจะยกเลิกการเลือกคุณสมบัติการเชื่อมต่ออัตโนมัติ แน่นอนว่าเมื่อฉันกลับถึงบ้านฉันต้องตรวจสอบอีกครั้ง - ซึ่งเอาชนะวัตถุประสงค์ของการเชื่อมต่อ "อัตโนมัติ"

คำตอบ:


1

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- แต่ฉันยังคงรักที่จะได้รับ "ภายใต้ประทุน" และคนจรจัดกับสิ่งนี้


ฉันควรอธิบายส่วนหนึ่งของสิ่งนี้คือส่วน Launchd "เคล็ดลับ" คือเมื่อใดก็ตามที่มีการเปลี่ยนแปลงในไดเรกทอรี '/ Library / Preferences / SystemConfiguration /' สคริปต์จะทำงาน ไดเรกทอรีนั้นจะเปลี่ยนไปเมื่อเครือข่ายระบบเปลี่ยนแปลง
TJ Luoma

ฉันกำลังดูเพื่อนสนิท ดูดี แต่มีพื้นฐานมาจากตำแหน่งทางภูมิศาสตร์เท่านั้น? ตัวอย่างเช่นสมมติว่าฉันต้องการดูหนังในเตียงของฉันฉันถอดปลั๊กอีเธอร์เน็ตและดังนั้นอย่าคาดหวังว่า PPPoE จะพยายามเชื่อมต่อ - ฉันจะทำสิ่งนี้ได้อย่างไร ฉันยังคงมีสภาพทางภูมิศาสตร์ "บ้าน"
nute

0

ใช้ฟังก์ชันตำแหน่ง Network preferencesมันเป็นกล่องคำสั่งผสมสูงสุดภายใต้

เลือกแก้ไขที่ตั้งสร้างที่ใหม่นำไปใช้และหลังจากนั้นคุณจะสามารถสลับไปมาระหว่างหน้าแรก (ด้วยการเชื่อมต่ออัตโนมัติ PPPoE) และตำแหน่งอื่น ๆ จากเมนู Apple


ยังคงต้องป้อนข้อมูลทุกครั้ง ฉันหวังว่าจะได้รับการแก้ไข แต่ขอบคุณนะ
nute

@nute คุณอาจลองใช้ Apple Script เพื่อตรวจจับเมื่ออีเทอร์เน็ตไม่ได้เสียบปลั๊กหรือเสียบเข้ากับดังนั้นจึงจะสลับตำแหน่งในเหตุการณ์ได้
iskra
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.