Переключение на заданную сеть WiFi через bash на Mac

Предполагается, что входной файл представляет собой одно число в строке, и вы хотите добавить .0 к каждому однозначному целому числу:

sed 's/^[0-9]$/&.0/' /path/to/inputfile

Чтобы заменить содержимое файла, а не отображать изменения:

sed --in-place 's/^[0-9]$/&.0/' /path/to/inputfile
2
04.11.2015, 04:32
1 ответ

1 )Подключение к беспроводной сети
Вы хотите добавить свой пароль. Хотя BSSIDpasskeyдля моей сети WiFi был в моей связке ключей, я мог переключиться на него и успешно войти в систему, только добавив ключ доступа непосредственно в командную строку в виде открытого текста. Ничто другое не работало.

networksetup -setairportnetwork [en0] [network_BBSSID] [passkey]

2 )Приостановка сценария до подключения
Вы можете просто проверить код ошибки команды выше (echo $?). Будьте осторожны, так как коды ошибок networksetup не тривиальны, может помочь поиск «сбой»:
networksetup -setairportnetwork en0 mywifi mypass | grep -ic "failed"

если результат 0 все должно быть хорошо. Вы также можете напрямую протестировать фактическое подключение, а не просто подключаться к Wi-Fi (лучший вариант imho ), например, вы можете проверить, что вы можетеpingхост в вашей сети или в Интернете. Вы должны поместить все это в цикл while :, который будет повторять команду до тех пор, пока результат не станет 0. Или вы можете добавить в свою команду оператор read, который приостановит выполнение сценария (мое понимание вашего вопроса ).

Наконец, вы можете добавить тайм-аут , чтобы убить networksetup в случае, если сеть не подключается через некоторое время :команда тайм-аута,часть gnu coreutils может пригодиться. Его можно установить через менеджер пакетов brew :brew install coreutils.

3 )Один вкладыш
! gtimeout 10s networksetup -setairportnetwork en0 mywifi mypass >/dev/null && echo 1 || { ping -oq www.apple.com 2>&- >/dev/null && echo "Connected" || read -n1 -r -p "Connection failed. Press any key to continue..." ; } ;

gtimeout:Gnutls по умолчанию добавляет префикс g к своим командам, чтобы избежать путаницы с существующими утилитами по умолчанию с тем же именем
/dev/null, 2>&-:избегать печати выходных данных и кодов ошибок различных команд
read -n 1:пауза до нажатия клавиши

1
27.01.2020, 22:20

Теги

Похожие вопросы