Як отримати Mac для автоматичного підключення до мережі Wi-Fi?


11

У мене є Mac Mini Server, який відключається кожні кілька днів від мережі Wi-Fi. Можуть бути й інші параметри, що викликають початкове відключення (наприклад, перезавантажений бездротовий маршрутизатор), але Mac не підключається автоматично.

Це основна проблема, оскільки це серверна машина, яка раптово стає недоступною, поки хтось фізично не перейде до машини і не скористається меню wifi для підключення вручну до мережі. Слід зазначити, що, хоча мережа Wi-Fi є WPA2, підключення вручну вручну не передбачає повторного введення пароля, тому немає очевидної причини, чому він не підключається автоматично.

Як я можу змусити Mac періодично намагатися підключитися до визначеної мережі Wi-Fi?


Чи визначена така мережа як "Краща"? Чи встановлено в розділі "Системні налаштування"> "Мережа", що "Запам’ятайте будь-яку мережу, до якої приєднався цей комп'ютер", і чи не встановлено прапорець "Відключитись від бездротових мереж при виході з системи"? Ви також можете спробувати видалити та відновити мережеве з'єднання.
harrymc

де саме є опція "Відключення від бездротових мереж при виході з системи"? Це біг Лев.
GJ.

Мабуть, у додаткових налаштуваннях.
harrymc

не робити вас параноїдальним чи будь-яким іншим, але єдиний спосіб зламати шифрування WPA2 - це нюхати пакети аутентифікації (коли комп'ютер підключається), і найпоширеніший спосіб зробити це - знезахистити одну з машин і обнюхати мережу, коли він знову підключається.
Нейт Коппенгавер

Відповіді:


12

Ось сценарій 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

Дякую. навіщо використовувати яблучний скрипт? здається, більше піддається скрипту оболонки, можливо, той, який працює щохвилини або приблизно за допомогою запуску.
GJ.

також, як "скинути всі налаштування мережі"?
GJ.

Це можна зробити за допомогою сценарію оболонки. Хоча мені краще в Applescript, тому я написав це в Applescript. Я побачу, чи зможу я записати це в сценарії оболонки. Я також оновив публікацію про перезавантаження налаштувань мережі.
Кассім Дорсель

Покращили сценарій та додали сценарій оболонки.
Кассім Дорсель

Я виправив найвиразнішу помилку сценарію оболонки, але, ймовірно, слід її відновити ще раз. На моєму Mac я отримую два звернення від того, grepколи він працює, і лише один, коли він знижений, але, мабуть, краще перевірити щось інше; підрахунок кількості чогось є в значній мірі антипатерном.
трійчатка

4

Я хотів би прокоментувати відповідь Кассіма Дорселя , але мені не вистачає балів для цього.

У мене була така ж проблема з моїм сервером Mac:

Wi-Fi підключається до VPN, а Ethernet до локальної мережі, тому якщо втрачено з’єднання 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

Подібно до прийнятої відповіді, я виправив найбільш проблемні проблеми програмування оболонки. Зараз це майже елегантно.
трійчатка

2

Ви можете спробувати пограти з airportутилітою (у новіших версіях OS X він схований у /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airportсхожий шлях).

Зокрема, JoinModeі JoinModeFallbackпереваги можуть бути корисними. На моїй машині JoinModeFallbackвстановлено DoNothingза замовчуванням. Зміна цього KeepLookingвиглядає перспективним початком.

Біжіть airportбез аргументів, щоб побачити його допомогу.


Це було цікаво та багатообіцяюче, але зрештою для мене нічого не змінило. Я змінив налаштування (у мене не було "невідомого" і "нічого" для резервної копії), але Wi-Fi все одно не підключиться.
трійчатка

0

Ось простий рефакторинг, який працює для мене.

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

Очевидно, замініть $ssidфактичним мережевим SSID та $passwordпаролем для цієї мережі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.