Comment obtenir un Mac pour se reconnecter automatiquement à un réseau wifi?

11

J'ai un Mac Mini Server qui se déconnecte tous les quelques jours du réseau wifi. D'autres paramètres peuvent entraîner la déconnexion initiale (comme le redémarrage du routeur sans fil), mais le Mac ne se reconnecte pas automatiquement.

C'est un problème majeur car c'est une machine serveur qui devient soudainement indisponible jusqu'à ce que quelqu'un se rend physiquement sur la machine et utilise le menu wifi pour se reconnecter manuellement au réseau. Je dois mentionner que bien que le réseau wifi soit WPA2, la reconnexion manuelle n'implique pas de ressaisir le mot de passe, il n'y a donc aucune raison évidente pour laquelle il ne se reconnecte pas automatiquement.

Comment puis-je faire en sorte que le Mac essaie périodiquement de se reconnecter à un réseau wifi spécifié?

GJ.
la source
Le réseau en question est-il défini comme préféré? Avez-vous vérifié dans Préférences Système> Réseau que "Se souvenir de tout réseau auquel cet ordinateur a adhéré" est coché et que "Se déconnecter des réseaux sans fil lors de la déconnexion" n'est pas coché? Vous pouvez également essayer de supprimer et de recréer la connexion réseau.
harrymc
où se trouve exactement l'option "Se déconnecter des réseaux sans fil lors de la déconnexion"? Il dirige Lion.
GJ.
Apparemment dans les paramètres avancés.
harrymc
ne pas vous rendre paranoïaque ou quoi que ce soit, mais la seule façon de casser le cryptage WPA2 est de renifler les paquets d'authentification (lorsqu'un ordinateur se connecte) et la façon la plus courante de le faire est de désauthentifier l'une des machines et de renifler le réseau lorsque il se reconnecte.
Nate Koppenhaver

Réponses:

12

Voici un script Applescript et shell pour vérifier si Airport est connecté et sinon pour le connecter.

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

Remplacez <networkName>par le nom du réseau et <passwordToNetwork>par son mot de passe. Le "en1" devrait être correct si vous n'avez pas changé vos périphériques réseau.

Maintenant, tout ce que vous avez à faire est de faire une boucle ou de l'appeler pour vérifier la connexion.

Néanmoins, l'aéroport devrait se reconnecter automatiquement si la connexion est perdue. Essayez peut-être de réinitialiser toutes les préférences réseau et voyez si cela fonctionne.

Comment réinitialiser complètement vos préférences réseau: désactivez Airport. Fermez les Préférences Système. Accédez à: /Library/Preferences/SystemConfiguration/ Faites une copie, puis supprimez les fichiers suivants:

com.apple.airport.preferences.plist
com.apple.network.*
com.apple.smb.server.plist
NetworkInterfaces.plist
Kassym Dorsel
la source
Merci. pourquoi utiliser un applescript? il semble se prêter davantage à un script shell qui s'exécute peut-être toutes les minutes en utilisant launchd.
GJ.
aussi, comment "réinitialisez-vous toutes les préférences réseau"?
GJ.
Cela pourrait être fait avec un script shell. Bien que je sois meilleur à Applescript, je l'ai écrit dans Applescript. Je vais voir si je peux l'écrire dans un script shell. J'ai également mis à jour l'article sur la réinitialisation des préférences réseau.
Kassym Dorsel
Amélioration du script et ajout d'un script shell.
Kassym Dorsel
J'ai corrigé l'erreur de script shell la plus flagrante mais elle devrait probablement être refactorisée un peu plus. Sur mon Mac, je reçois deux hits grepquand il est en haut et un seul quand il est en panne, mais il serait probablement préférable de vérifier autre chose; compter le nombre de quelque chose est à peu près un contre-modèle.
tripleee
5

Je voudrais commenter la réponse de Kassym Dorsel , mais je n'ai pas assez de points pour le faire.

J'ai eu le même problème avec mon serveur Mac:

Le Wi-Fi se connecte au VPN et Ethernet au LAN, donc si la connexion Wi-Fi est perdue, OS X ne se reconnecte pas automatiquement.

Considérant la réponse de Kassym Dorsel:

  • Je n'étais pas à l'aise d'avoir mon mot de passe Wi-Fi stocké en clair (certes, c'est un risque extrêmement faible, mais quand même).

  • Je voulais qu'il active le Wi-Fi s'il avait été désactivé.

  • Je voulais qu'il gère la condition où une adresse IP statique a été attribuée, le Wi-Fi était activé, mais il n'était toujours pas connecté ou connecté au mauvais réseau Wi-Fi (SSID).

J'ai donc modifié son script pour répondre à ces préoccupations (remplacer <networkName>par votre SSID de réseau préféré):

#!/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
Vic dément
la source
Semblable à la réponse acceptée, j'ai résolu les problèmes de programmation shell les plus problématiques. C'est presque élégant maintenant.
tripleee
2

Vous pouvez essayer de jouer avec l' airportutilitaire (dans les nouvelles versions d'OS X, il est caché /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airportou dans un chemin similaire).

Plus précisément, les préférences JoinModeet JoinModeFallbackpourraient être utiles. Sur ma machine, JoinModeFallbackest défini DoNothingpar défaut. Le changer en KeepLookingsemble un début prometteur.

Exécutez airportsans arguments pour voir son aide.

mpitt
la source
C'était intéressant et prometteur, mais cela n'a finalement rien changé pour moi. J'ai changé les préférences (j'avais "inconnu" et "rien" pour le repli) mais le WiFi ne se reconnectera toujours pas.
tripleee
0

Voici une refactorisation simple qui fonctionne pour moi.

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

Évidemment, remplacez-le $ssidpar le SSID du réseau réel et $passwordpar le mot de passe de ce réseau.

tripleee
la source