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


11

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

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

Macで定期的に特定のWi-Fiネットワークに接続して再試行する方法を教えてください。


問題のネットワークは優先として定義されていますか?[システム環境設定]> [ネットワーク]で、[このコンピュータが参加しているネットワークを記憶する]がオンで、[ログアウト時にワイヤレスネットワークから切断する]がオフになっていることを確認しましたか?ネットワーク接続を削除して再作成することもできます。
harrymc

「ログアウト時にワイヤレスネットワークから切断する」オプションはどこにあるのですか?Lionを実行しています。
GJ。

どうやら詳細設定で。
harrymc '12年

偏執狂や何かをするためではありませんが、WPA2暗号化を解読する唯一の方法は、認証パケット(コンピューターが接続するとき)を盗聴することであり、これを行う最も一般的な方法は、マシンの1つを認証解除してネットワークを盗聴することです再接続します。
Nate Koppenhaver、2011年

回答:


12

これは、Airportが接続されているかどうかをチェックする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」は正しいはずです。

これで、これをループするか、呼び出して接続を確認するだけです。

それにもかかわらず、接続が失われた場合、空港は自動的に再接続するはずです。すべてのネットワーク設定をリセットして、それが機能するかどうかを確認してください。

ネットワーク設定を完全にリセットする方法:Airportをオフにします。システム環境設定を閉じます。移動:/Library/Preferences/SystemConfiguration/ コピーを作成し、次のファイルを削除します。

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

ありがとう。なぜアップルスクリプトを使うのですか?おそらく、1分ごとにlaunchdを使用して実行されるシェルスクリプトに適しています。
GJ。

また、「すべてのネットワーク設定をリセット」するにはどうすればよいですか?
GJ。

これはシェルスクリプトで行うことができます。私はApplescriptが得意なので、Applescriptで書いた。シェルスクリプトで記述できるか確認します。ネットワーク設定のリセットに関する投稿も更新しました。
Kassym Dorsel、2011

スクリプトを改善し、シェルスクリプトを追加しました。
Kassym Dorsel、2011

最も悪質なシェルスクリプトエラーを修正しましたが、おそらくもう少しリファクタリングする必要があります。私のMacでは、grep起動時に2回、停止時に1回しかヒットしませんが、他に何かをチェックする方が良いでしょう。何かの数を数えることは、ほぼアンチパターンです。
tripleee

5

カシムドーセルの回答についてコメントしたいのですが、そのための十分なポイントがありません。

Macサーバーでも同じ問題が発生しました。

Wi-FiはVPNに、EthernetはLANに接続するため、Wi-Fi接続が失われた場合、OS Xは自動的に再接続しません。

カシム・ドーセルの答えを考えると:

  • 私の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設定が役立ちます。私のマシンでJoinModeFallbackDoNothing、デフォルトでに設定されています。それを変更すること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.