OS X-Shell-Skript zum Herstellen einer Verbindung mit einem bekannten WLAN-AP ohne explizite Verwendung eines Kennworts

OS X-Shell-Skript zum Herstellen einer Verbindung mit einem bekannten WLAN-AP ohne explizite Verwendung eines Kennworts

Ich versuche, ein Shell-Skript zu schreiben, das mit der Verbindung zu einer bestimmten SSID beginnt (eine, mit der ich schon einmal verbunden war, ein bevorzugtes Netzwerk). Die einzige Möglichkeit, dies über die Befehlszeile zu tun, scheint folgende zu sein:

networksetup -setairportnetwork en0 "MyAP" "PASSWORD"

Wie kann ich eine Verbindung zum Netzwerk „MyAP“ herstellen, ohne das Kennwort unsicher im Shell-Skript zu speichern?

Antwort1

Es gibtein großartiges Tutorial von Allan Odgaardim Texmate-Blog, in dem beschrieben wird, wie man das Keychain-Dienstprogramm von der Befehlszeile aus verwendet, um (unter anderem) ein Passwort abzurufen. Ich empfehle, es sowie die entsprechenden Kommentare durchzulesen. Sie können eine Funktion erstellen, die allgemein verwendet werden kann, wie z. B.

#!/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

Damit dies programmgesteuert und ohne Benutzerbestätigung durchgeführt werden kann, müssen Sie der securityBinärdatei (in meiner Installation von 10.11.2 befindet sie sich unter /usr/bin/security) Zugriff auf das spezifische Passwort gewähren. Dies kann auf zwei Arten erfolgen:

  1. indem Sie Folgendes von einem Terminal aus ausführen

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

    wie beschrieben von davidacland in seinemJAMFNation-Antwort.Notiz: Ich konnte dies mit einem vorhandenen Schlüsselanhänger nicht reproduzieren (obwohl die Antwort von davidacland nahelegt, dass es möglich ist).

-oder-

  1. Verwendung derSchlüsselbundzugriff.appGUI zum manuellen Hinzufügen securityzur Zugriffskontrollliste des Schlüsselbundelements: Schlüsselbundzugriffs-GUI -> Doppelklick auf Schlüsselbundelement -> Zugriffskontrolle

Bildbeschreibung hier eingeben

Antwort2

Wenn es das erste verfügbare bevorzugte Netzwerk ist (Netzwerkeinstellungen, Erweitert, "Netzwerke merken, denen dieser Computer beigetreten ist" ist aktiviert) und Sie "Administratorberechtigung erforderlich zum: - Ein- und Ausschalten von WLAN" nicht aktiviert haben, können Sie

networksetup -setairportpower en0 offgefolgt von „by“
networksetup -setairportpower en0 on, und es wird eine Verbindung zum ersten verfügbaren bevorzugten Netzwerk hergestellt, ohne dass ein Kennwort erforderlich ist (ausprobiert unter OS X 10.9.4).

Wenn Sie ausführen, networksetup -helpist die letzte Ausgabezeile

Jeder Befehl, der ein Passwort erfordert, wird akzeptiert – um anzugeben, dass das Passwort von stdin gelesen werden soll.

verwandte Informationen