数日おきにwifiネットワークから切断されているMacMiniサーバーがあります。最初の切断の原因となる他のパラメータ(ワイヤレスルーターの再起動など)がある可能性がありますが、Macは自動的に再接続しません。
誰かが物理的にマシンにアクセスし、wifiメニューを使用して手動でネットワークに再接続するまで突然使用できなくなるサーバーマシンであるため、これは大きな問題です。 Wi-FiネットワークはWPA2ですが、手動で再接続する場合はパスワードを再入力する必要がないため、自動的に再接続されない明確な理由はありません。
Macに定期的に指定されたwifiネットワークに再接続を試みるようにするにはどうすればよいですか?
これは、空港が接続されているかどうかを確認し、接続されていないかどうかを確認するためのApplescriptとシェルスクリプトです。
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」が正しいはずです。
これをループするか、呼び出すだけで接続を確認できます。
それでも、接続が失われた場合、空港は自動的に再接続する必要があります。たぶん、すべてのネットワーク設定をリセットしてみて、それが機能するかどうかを確認してください。
ネットワーク設定を完全にリセットする方法:空港をオフにします。システム環境設定を閉じます。次の場所に移動します。/Library/Preferences/SystemConfiguration/
コピーを作成し、次のファイルを削除します。
com.Apple.airport.preferences.plist
com.Apple.network.*
com.Apple.smb.server.plist
NetworkInterfaces.plist
Kassym Dorselの回答 についてコメントしたいのですが、十分なポイントがありません。
Macサーバーでも同じ問題が発生しました。
Wi-FiはVPNに接続し、イーサネットはLANに接続するため、Wi-Fi接続が失われた場合、OSXは自動的に再接続しません。
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
airport
ユーティリティを試してみてください(新しいOS Xバージョンでは、/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport
または同様のパスに隠されています)。
具体的には、JoinMode
およびJoinModeFallback
プリファレンスが役立つ可能性があります。私のマシンでは、JoinModeFallback
はデフォルトでDoNothing
に設定されています。 KeepLooking
に変更することは有望なスタートのようです。
引数なしでairport
を実行して、ヘルプを確認してください。
これが私のために働く簡単なリファクタリングです。
#!/bin/bash
networksetup -getinfo Wi-Fi | grep -q Subnet: ||
networksetup -setairportnetwork en1 "$ssid" "$password"
明らかに、$ssid
を実際のネットワークSSIDに置き換え、$password
をこのネットワークのパスワードに置き換えます。