web-dev-qa-db-ja.com

Macをwifiネットワークに自動再接続させる方法は?

数日おきにwifiネットワークから切断されているMacMiniサーバーがあります。最初の切断の原因となる他のパラメータ(ワイヤレスルーターの再起動など)がある可能性がありますが、Macは自動的に再接続しません。

誰かが物理的にマシンにアクセスし、wifiメニューを使用して手動でネットワークに再接続するまで突然使用できなくなるサーバーマシンであるため、これは大きな問題です。 Wi-FiネットワークはWPA2ですが、手動で再接続する場合はパスワードを再入力する必要がないため、自動的に再接続されない明確な理由はありません。

Macに定期的に指定されたwifiネットワークに再接続を試みるようにするにはどうすればよいですか?

11
GJ.

これは、空港が接続されているかどうかを確認し、接続されていないかどうかを確認するための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
12
Kassym Dorsel

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
5
Vic Demented

airportユーティリティを試してみてください(新しいOS Xバージョンでは、/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airportまたは同様のパスに隠されています)。

具体的には、JoinModeおよびJoinModeFallbackプリファレンスが役立つ可能性があります。私のマシンでは、JoinModeFallbackはデフォルトでDoNothingに設定されています。 KeepLookingに変更することは有望なスタートのようです。

引数なしでairportを実行して、ヘルプを確認してください。

2
mpitt

これが私のために働く簡単なリファクタリングです。

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

明らかに、$ssidを実際のネットワークSSIDに置き換え、$passwordをこのネットワークのパスワードに置き換えます。

0
tripleee