Làm cách nào để máy Mac tự động kết nối lại với mạng wifi?


11

Tôi có một máy chủ Mac Mini ngắt kết nối vài ngày một lần khỏi mạng wifi. Có thể có các tham số khác gây ra ngắt kết nối ban đầu (chẳng hạn như bộ định tuyến không dây được khởi động lại) nhưng Mac không tự động kết nối lại.

Đây là một vấn đề lớn vì đó là một máy chủ đột nhiên không khả dụng cho đến khi có người vào máy và sử dụng menu wifi để kết nối lại thủ công với mạng. Tôi nên đề cập rằng mặc dù mạng wifi là WPA2, nhưng việc kết nối lại thủ công không liên quan đến việc nhập lại mật khẩu để không có lý do rõ ràng tại sao nó không tự động kết nối lại.

Làm cách nào để Mac có thể định kỳ thử và kết nối lại với mạng wifi được chỉ định?


Là mạng trong câu hỏi được xác định là ưa thích? Bạn đã kiểm tra trong Tùy chọn hệ thống> Mạng rằng "Ghi nhớ bất kỳ mạng nào mà máy tính này đã tham gia" được chọn và "Ngắt kết nối khỏi mạng không dây khi đăng xuất" không được chọn? Bạn cũng có thể thử xóa và tạo lại kết nối mạng.
harrymc

Chính xác thì tùy chọn "Ngắt kết nối khỏi mạng không dây khi đăng xuất" ở đâu? Nó đang chạy Lion.
GJ.

Rõ ràng trong cài đặt Nâng cao.
harrymc

không làm bạn hoang tưởng hay bất cứ điều gì, nhưng cách duy nhất để bẻ khóa mã hóa WPA2 là đánh hơi các gói xác thực (khi máy tính kết nối) và cách phổ biến nhất để làm điều đó là xác thực một trong các máy và đánh hơi mạng khi nó kết nối lại.
Nate Koppenhaver

Câu trả lời:


12

Dưới đây là một tập lệnh Applescript và shell để kiểm tra xem Sân bay có được kết nối hay không và nếu không kết nối nó.

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

Thay thế <networkName>bằng tên của mạng và <passwordToNetwork>bằng mật khẩu của nó. "En1" phải chính xác nếu bạn chưa thay đổi thiết bị Mạng của mình.

Bây giờ tất cả những gì bạn cần làm là lặp cái này hoặc gọi nó để kiểm tra kết nối.

Tuy nhiên, sân bay sẽ tự động kết nối lại nếu mất kết nối. Có thể thử đặt lại tất cả các tùy chọn mạng và xem nếu nó hoạt động.

Cách đặt lại hoàn toàn Tùy chọn mạng của bạn: Tắt Sân bay. Đóng tùy chọn hệ thống. Điều hướng đến: /Library/Preferences/SystemConfiguration/ Tạo một bản sao, sau đó xóa các tệp sau:

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

cảm ơn. Tại sao sử dụng một applescript mặc dù? nó dường như cho vay nhiều hơn vào một kịch bản shell có lẽ là một kịch bản chạy mỗi phút hoặc lâu hơn bằng cách sử dụng launchd.
GJ.

Ngoài ra, làm thế nào để bạn "thiết lập lại tất cả các tùy chọn mạng"?
GJ.

Điều này có thể được thực hiện với một kịch bản shell. Mặc dù tôi giỏi hơn về Applescript nên tôi đã viết nó trong Applescript. Tôi sẽ xem nếu tôi có thể viết nó trong một kịch bản shell. Tôi cũng đã cập nhật bài viết về thiết lập lại tùy chọn mạng.
Kassym Dorsel

Cải thiện tập lệnh và thêm tập lệnh shell.
Kassym Dorsel

Tôi đã sửa lỗi shell script nghiêm trọng nhất nhưng có lẽ nó nên được cấu trúc lại một số nữa. Trên máy Mac của tôi, tôi nhận được hai lần truy cập từ grepkhi nó lên và chỉ một lần khi nó tắt, nhưng có lẽ sẽ tốt hơn nếu kiểm tra thứ khác; đếm số lượng của một cái gì đó là khá nhiều antipotype.
tripleee

5

Tôi muốn bình luận về câu trả lời của Kassym Dorsel , nhưng tôi không có đủ điểm để làm như vậy.

Tôi gặp vấn đề tương tự với máy chủ Mac của mình:

Wi-Fi kết nối với VPN và Ethernet với LAN, vì vậy nếu mất kết nối Wi-Fi, OS X sẽ không tự động kết nối lại.

Xem xét câu trả lời của Kassym Dorsel:

  • Tôi không cảm thấy thoải mái khi mật khẩu Wi-Fi của mình được lưu trữ rõ ràng (phải thừa nhận rằng đó là một rủi ro cực kỳ thấp, nhưng vẫn còn).

  • Tôi muốn nó kích hoạt Wi-Fi nếu nó đã bị tắt.

  • Tôi muốn nó xử lý điều kiện địa chỉ IP tĩnh được gán, Wi-Fi đã được bật, nhưng nó vẫn không được kết nối hoặc kết nối với mạng Wi-Fi sai (SSID).

Vì vậy, tôi đã sửa đổi tập lệnh của anh ấy để giải quyết những lo ngại này (thay thế <networkName>bằng SSID mạng ưa thích của bạn):

#!/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

Tương tự như câu trả lời được chấp nhận, tôi đã sửa các vấn đề lập trình shell có vấn đề nhất. Điều này là gần như thanh lịch bây giờ.
tripleee

2

Bạn có thể thử chơi với airporttiện ích (trong các phiên bản OS X mới hơn, nó bị ẩn đi /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airporthoặc một đường dẫn tương tự).

Cụ thể, các ưu đãi JoinModeJoinModeFallbackcó thể hữu ích. Trên máy của tôi, JoinModeFallbackđược đặt thành DoNothingmặc định. Thay đổi nó để KeepLookingcó vẻ như một khởi đầu đầy hứa hẹn.

Chạy airportmà không có đối số để xem sự giúp đỡ của nó.


Điều này thật thú vị và đầy hứa hẹn, nhưng cuối cùng tôi đã không thay đổi bất cứ điều gì. Tôi đã thay đổi tùy chọn (tôi có "không xác định" và "không có gì" cho dự phòng) nhưng WiFi vẫn không kết nối lại.
tripleee

0

Đây là một cấu trúc lại đơn giản mà làm việc cho tôi.

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

Rõ ràng, thay thế $ssidbằng SSID mạng thực tế và $passwordbằng mật khẩu cho mạng này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.