script shell do OS X para conectar-se a um AP Wi-Fi conhecido sem usar explicitamente uma senha

0

Estou tentando escrever um script de shell que comece conectando-se a um SSID específico (um que eu já conectei anteriormente, uma rede preferencial). A única maneira que eu posso fazer isso via linha de comando é:

networksetup -setairportnetwork en0 "MyAP" "PASSWORD"

Como posso me conectar à rede "MyAP" sem armazenar a senha de forma insegura no script de shell?

    
por Pantone 06.09.2014 / 09:27

2 respostas

1

Se for a primeira rede preferida disponível (Preferências de rede, Avançado, "Lembrar que as redes conectadas a este computador" estão marcadas) e você não precisa "Solicitar autorização do administrador para: - Ativar ou desativar o Wi-Fi" pode usar

networksetup -setairportpower en0 off seguido por networksetup -setairportpower en0 on e ele se conectará à primeira rede preferida disponível sem exigir uma senha (tente no OS X 10.9.4).

Se você executar networksetup -help , a última linha de saída será

Any command that takes a password, will accept - to indicate the password should be read from stdin.

    
por 06.09.2014 / 11:51
1

Existe um ótimo tutorial de Allan Odgaard no blog texmate que descreve como use o utilitário keychain da linha de comando para recuperar uma senha (entre outras coisas). Eu sugiro lê-lo, bem como os comentários correspondentes. Você pode criar uma função para ser genericamente usada, como

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

Para que isso seja feito de forma programática, sem a confirmação do usuário, você precisará conceder ao acesso security binário (na minha instalação de 10.11.2 está localizado em /usr/bin/security ) a senha específica. Isso pode ser feito de duas maneiras:

  1. executando o seguinte a partir de um terminal

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

    como descrito por davidacland em sua resposta do JAMFNation . Observação : Eu não consegui reproduzir isso com um item de chaveiro existente (como a resposta davidacland sugere ser possível).

- ou -

  1. usando a GUI Keychain Access.app para adicionar manualmente security à lista de controle de acesso do item de chave: Chaveiro GUI de acesso - > clique duas vezes no item de chaveiro - > Controle de acesso

    
por 28.02.2016 / 13:37