Скрипт оболочки OS X для подключения к известной точке доступа Wi-Fi без явного использования пароля

Скрипт оболочки OS X для подключения к известной точке доступа Wi-Fi без явного использования пароля

Я пытаюсь написать скрипт оболочки, который начинается с подключения к определенному SSID (тому, к которому я уже подключался, предпочитаемая сеть). Единственный способ, которым я могу сделать это через командную строку, это:

networksetup -setairportnetwork en0 "MyAP" "PASSWORD"

Как подключиться к сети «MyAP», не сохраняя пароль в незащищенном виде в скрипте оболочки?

решение1

Естьотличный урок от Аллана Одгаардав блоге texmate, где описывается, как использовать утилиту keychain из командной строки для извлечения пароля (помимо прочего). Предлагаю прочитать его, а также соответствующие комментарии. Вы можете создать функцию для общего использования, например

#!/bin/bash

get_pw () { 
    security 2>&1 >/dev/null find-generic-password -ga "$1" \
    | ruby -e 'print $1 if STDIN.gets =~ /^password: "(.*)"$/'
}

pass=$(get_pw $1)
echo $pass

Для того, чтобы это было сделано программно, без подтверждения пользователя, вам нужно будет предоставить бинарнику security(в моей установке 10.11.2 он находится в /usr/bin/security) доступ к определенному паролю. Это можно сделать одним из двух способов:

  1. выполнив следующее из терминала

    security add-generic-password -a "account name" -s "service name" -T "/usr/bin/security" -U
    

    как описано davidacland в егоJAMFОтвет нации.Примечание: Мне не удалось воспроизвести это с помощью существующего элемента брелка для ключей (хотя ответ davidacland предполагает, что это возможно).

-или-

  1. используяСвязка ключей Access.appГрафический интерфейс пользователя для ручного добавления securityв список контроля доступа элемента связки ключей: Графический интерфейс доступа к связке ключей -> дважды щелкните элемент связки ключей -> Контроль доступа

введите описание изображения здесь

решение2

Если это первая доступная предпочитаемая сеть (Настройки сети, Дополнительно, отмечен флажок «Запомнить сети, к которым подключен этот компьютер») и у вас не отмечен флажок «Требовать авторизацию администратора для: - включения или выключения Wi-Fi», вы можете использовать

networksetup -setairportpower en0 offзатем нажмите
networksetup -setairportpower en0 onи он подключится к первой доступной предпочитаемой сети без запроса пароля (проверено на OS X 10.9.4).

Если вы выполните networksetup -helpпоследнюю строку вывода:

Любая команда, принимающая пароль, будет принимать -, чтобы указать, что пароль следует считать из stdin.

Связанный контент