วิธีรับ Mac เพื่อเชื่อมต่อใหม่อัตโนมัติกับเครือข่าย wifi


11

ฉันมี Mac Mini Server ที่ตัดการเชื่อมต่อทุกสองสามวันหรือมากกว่านั้นจากเครือข่าย wifi อาจมีพารามิเตอร์อื่น ๆ ที่ก่อให้เกิดการเชื่อมต่อเริ่มต้น (เช่นเราเตอร์ไร้สายกำลังรีบูต) แต่ Mac ไม่ได้เชื่อมต่อใหม่โดยอัตโนมัติ

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

ฉันจะให้ Mac ลองเชื่อมต่อกับเครือข่าย wifi ที่ระบุเป็นระยะได้อย่างไร


เครือข่ายที่เป็นปัญหาถูกกำหนดให้เป็นที่ต้องการหรือไม่? คุณได้ตรวจสอบในการตั้งค่าระบบ> เครือข่ายที่มีการทำเครื่องหมาย "จำเครือข่ายใด ๆ ที่คอมพิวเตอร์เครื่องนี้เข้าร่วม" และ "ยกเลิกการเชื่อมต่อจากเครือข่ายไร้สายเมื่อออกจากระบบ" หรือไม่ คุณสามารถลองลบและสร้างการเชื่อมต่อเครือข่ายใหม่ได้
harrymc

ตัวเลือก "ตัดการเชื่อมต่อจากเครือข่ายไร้สายเมื่อออกจากระบบ" อยู่ที่ไหน มันกำลังวิ่ง Lion
GJ

เห็นได้ชัดในการตั้งค่าขั้นสูง
harrymc

เพื่อไม่ให้คุณหวาดระแวงหรืออะไรก็ตาม แต่วิธีเดียวที่จะถอดรหัส WPA2 คือการสูดดมแพ็คเก็ตการตรวจสอบความถูกต้อง (เมื่อคอมพิวเตอร์เชื่อมต่อ) และวิธีที่ใช้กันโดยทั่วไปมากที่สุดคือการยกเลิกการรับรองความถูกต้องของเครื่อง มันเชื่อมต่ออีกครั้ง
Nate Koppenhaver

คำตอบ:


12

นี่คือ Applescript และ shell script เพื่อตรวจสอบว่าสนามบินเชื่อมต่ออยู่หรือไม่และไม่เชื่อมต่อ

if (do shell script "networksetup -getinfo Wi-Fi | grep -c 'IP address:'") = 1 then
    do shell script "networksetup -setairportnetwork en1 <networkName> <passwordToNetwork>"
end if
#!/bin/bash
if [ $(networksetup -getinfo Wi-Fi | grep -c 'IP address:') = '1' ]
then networksetup -setairportnetwork en1 <networkName> <passwordToNetwork>
fi

แทนที่<networkName>ด้วยชื่อเครือข่ายและ<passwordToNetwork>รหัสผ่าน "en1" ควรถูกต้องหากคุณไม่ได้เปลี่ยนอุปกรณ์เครือข่าย

ตอนนี้สิ่งที่คุณต้องทำคือวนลูปนี้หรือเรียกมันเพื่อตรวจสอบการเชื่อมต่อ

อย่างไรก็ตามสนามบินควรเชื่อมต่อใหม่โดยอัตโนมัติหากการเชื่อมต่อขาดหายไป อาจลองรีเซ็ตการตั้งค่าเครือข่ายทั้งหมดและดูว่าใช้งานได้หรือไม่

วิธีรีเซ็ตการตั้งค่าเครือข่ายของคุณอย่างสมบูรณ์: ปิด Airport ปิดการตั้งค่าระบบ นำทางไปที่: /Library/Preferences/SystemConfiguration/ ทำสำเนาจากนั้นลบไฟล์ต่อไปนี้:

com.apple.airport.preferences.plist
com.apple.network.*
com.apple.smb.server.plist
NetworkInterfaces.plist

ขอบคุณ ทำไมถึงใช้งาน applescript ดูเหมือนว่าจะให้ยืมตัวเองกับเชลล์สคริปท์มากกว่าซึ่งอาจเป็นสคริปต์ที่รันทุก ๆ นาทีโดยใช้ launchd
GJ

นอกจากนี้คุณจะ "รีเซ็ตการตั้งค่าเครือข่ายทั้งหมด" ได้อย่างไร
GJ

สิ่งนี้สามารถทำได้ด้วยเชลล์สคริปต์ แม้ว่าฉันจะดีกว่าที่ Applescript ดังนั้นฉันจึงเขียนไว้ใน Applescript ฉันจะดูว่าฉันสามารถเขียนมันในเปลือกสคริปต์ ฉันได้อัปเดตโพสต์เกี่ยวกับการตั้งค่าเครือข่ายใหม่อีกครั้ง
Kassym Dorsel

ปรับปรุงสคริปต์และเพิ่มเชลล์สคริปต์
Kassym Dorsel

ฉันแก้ไขข้อผิดพลาดเชลล์สคริปต์ที่ร้ายแรงที่สุด แต่ก็ควรได้รับการปรับปรุงอีกครั้ง ใน Mac ของฉันฉันได้รับความนิยมสองครั้งgrepเมื่อมันเพิ่มขึ้นและมีเพียงครั้งเดียวเมื่อมันลดลง แต่อาจจะเป็นการดีกว่าที่จะตรวจสอบอย่างอื่น การนับจำนวนสิ่งที่ค่อนข้างจะเป็นปฏิปักษ์
tripleee

5

ฉันต้องการแสดงความคิดเห็นต่อคำตอบของ Kassym Dorselแต่ฉันไม่มีคะแนนเพียงพอที่จะทำเช่นนั้น

ฉันมีปัญหาเดียวกันกับเซิร์ฟเวอร์ Mac ของฉัน:

Wi-Fi เชื่อมต่อกับ VPN และ Ethernet กับ LAN ดังนั้นหากการเชื่อมต่อ Wi-Fi สูญหาย OS X จะไม่เชื่อมต่อใหม่โดยอัตโนมัติ

พิจารณาคำตอบของ Kassym Dorsel:

  • ฉันไม่สะดวกที่จะเก็บรหัสผ่าน Wi-Fi ไว้ในที่ชัดเจน (ยอมรับได้ว่ามันมีความเสี่ยงต่ำมาก แต่ก็ยัง)

  • ฉันต้องการให้เปิดใช้งาน Wi-Fi หากปิดการใช้งาน

  • ฉันต้องการให้จัดการกับเงื่อนไขที่มีการกำหนดที่อยู่ IP แบบคงที่ Wi-Fi ถูกเปิดใช้งาน แต่ก็ยังไม่ได้เชื่อมต่อหรือเชื่อมต่อกับเครือข่าย Wi-Fi (SSID) ผิด

ดังนั้นฉันจึงแก้ไขสคริปต์ของเขาเพื่อแก้ไขข้อกังวลเหล่านี้ (แทนที่<networkName>ด้วย SSID เครือข่ายที่คุณต้องการ):

#!/bin/bash

# turn on Wi-Fi if it's turned 'Off'
if networksetup -getairportpower en1 | grep -q 'Off'
    then networksetup -setairportpower en1 on
fi

# cycle Wi-Fi power if missing 'IP address'
if [ $(networksetup -getinfo Wi-Fi | grep -c 'IP address:') = '1' ]
then
    networksetup -setairportpower en1 off
    networksetup -setairportpower en1 on
fi

# initiate connection if not connected to the correct network
if networksetup -getairportnetwork en1 | grep -q '<networkName>'
    then networksetup -setairportnetwork en1 '<networkName>'
fi

คล้ายกับคำตอบที่ยอมรับฉันแก้ไขปัญหาการเขียนโปรแกรมเชลล์ที่มีปัญหามากที่สุด นี่เกือบจะสง่างามแล้ว
tripleee

2

คุณอาจลองเล่นกับairportยูทิลิตี้ (ในเวอร์ชั่น OS X เวอร์ชั่นใหม่กว่าซึ่งซ่อนอยู่/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airportหรือมีเส้นทางที่คล้ายกัน)

โดยเฉพาะอย่างยิ่งJoinModeและJoinModeFallbackการตั้งค่าอาจเป็นประโยชน์ บนเครื่องของฉันJoinModeFallbackตั้งเป็นค่าDoNothingเริ่มต้น การเปลี่ยนKeepLookingเป็นการเริ่มต้นที่มีแนวโน้ม

ทำงานairportโดยไม่มีข้อโต้แย้งเพื่อดูความช่วยเหลือ


นี่เป็นเรื่องที่น่าสนใจและสัญญา แต่ในท้ายที่สุดก็ไม่ได้เปลี่ยนแปลงอะไรสำหรับฉัน ฉันเปลี่ยนการตั้งค่า (ฉันมี "ไม่รู้จัก" และ "ไม่มีอะไร" สำหรับทางเลือก) แต่ WiFi ยังคงไม่เชื่อมต่อ
tripleee

0

นี่คือการเปลี่ยนโครงสร้างอย่างง่าย ๆ

#!/bin/bash
networksetup -getinfo Wi-Fi | grep -q Subnet: ||
networksetup -setairportnetwork en1 "$ssid" "$password"

เห็นได้ชัดว่าแทนที่$ssidด้วย SSID เครือข่ายจริงและ$passwordด้วยรหัสผ่านสำหรับเครือข่ายนี้

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