Use o Network-Manager para conectar-se a um ponto de acesso WiFi na linha de comando

26

Eu gostaria de me conectar a um ponto de acesso sem fio na linha de comando. Idealmente, eu precisaria apenas do nome do AP. Mas o endereço do hardware também funcionaria.

Sei que posso usar nmclipara conectar-me a uma conexão de rede gerenciada, mas, no meu caso, o ponto de acesso ainda não pode estar configurado para o Network-Manager (veja a diferença entre a saída de nm-toole nmcli con).

Exemplo de saída de nmcli:

Auto pwln       3a3d62b1-bbdf-4f76-b4d2-c211fd5cfb03   802-11-wireless [...]  
Wired Network   aa586921-accf-4932-98c4-c873c310f08e   802-3-ethernet [...]  
Cisco-UDP Uni   7f94847b-04dc-40b7-9955-5246fb77cc65   vpn [...]  
T-mobile (D1)   867f345a-cbbf-4bd4-b883-a5e5ae0932f0   gsm  [...]

Exemplo de saída de nm-tool:

State: connected
- Device: eth1  [Auto pwln] ----------------------------------------------------
[...]
  Wireless Access Points (* = current AP)
    *pwln: Infra, [...], Freq 2472 MHz, Rate 54 Mb/s, Strength 80 WPA WPA2
    WLAN:  Infra, [...], Freq 2422 MHz, Rate 54 Mb/s, Strength 20 WPA WPA2

[...]

Como faço para conectar-me a um ponto de acesso que pode ou não ser conhecido pelo NM?

Extra: descobrir se a conexão precisa de uma frase secreta e enviá-la também na linha de comando também seria ótimo (ou seja, seria bom se o gerente da rede não abrisse nenhum diálogo de chaveiro ou erros na GUI)

Stefano Palazzo
fonte

Respostas:

6

Você pode usar cnetworkmanagerpara isso.

Editar:

Após alguma investigação, fica claro que é impossível executar dois "provedores de configuração do usuário" (um aplicativo escutando em um determinado endereço dbus) ao mesmo tempo, e o cnetworkmanager precisa agir como um "provedor de configuração" (pelo menos até o conexão está configurada).

Agora, o que você pode fazer é adicionar as informações para a conexão ao gconf sob a /system/networking/connectionschave (você pode fazer isso na linha de comando ou em um script) e, em seguida, usar o dbus ou uma ferramenta de linha de comando como cnetworkmanager ou nmcli para conectar-se a ela. Talvez você também precise adicionar a chave ao chaveiro do usuário primeiro (para evitar pop-ups de senha).

Mas é claro que isso não funcionará em uma área de trabalho que use outro cliente NM que não o applet nm (por exemplo, KDE). Você precisaria descobrir como fornecer uma configuração para eles também ...

Edição 2:

Parece que é possível via org.freedesktop.NetworkManagerUserSettingsDBus do sistema, mas tudo isso é IMO mal documentado ...

Você pode ler sobre as definições de configuração e as especificações da interface DBus .

E aqui está um exemplo relevante (talvez você queira configurar uma conexão do usuário em vez de uma conexão do sistema)

JanC
fonte
Nada ainda. Infelizmente, o cnetworkmanager não funcionará corretamente além do applet do gerenciador de rede ("Outro applet está sendo executado")
Stefano Palazzo
Eu li como o NM & nm-applet funciona e editei minha resposta.
JanC 21/10
11

Você pode fazer isso diretamente usando nmcli, mesmo que a conexão ainda não esteja configurada no Network Manager:

nmcli dev wifi con "myssid" password "myssidpassword"

Se você não deseja que a senha da rede sem fio seja armazenada em seu histórico em versões recentes (talvez mais recentes que a mencionada abaixo), você pode adicionar --askao nmcli a solicitação de informações perdidas.

nmcli --ask device wifi connnect "myssid"

Esse recurso foi adicionado no Network Manager 0.9.6, portanto, isso funciona apenas no Ubuntu 12.10 ou posterior.

Você também pode obter uma lista de pontos de acesso disponíveis com:

nmcli dev wifi list
Robie Basak
fonte
connão é reconhecido pornmcli dev wifi
kaiser
Qual versão você está usando? Funciona para mim e está documentado como um exemplo na página de manual.
precisa saber é o seguinte
nmcli -vé0.9.4.0
kaiser
Então você está usando o 12.04? Como eu disse na minha resposta, isso só funciona no Ubuntu 12.10 ou posterior.
Robie Basak
Este pode ser o caso. Eu me pergunto se eu poderia sudo apt-get update.
Kaiser #
2

Você pode usar o iwconfig (wifitools) para criptografia wep, ou wpa_supplicant para wpa e wep, também usar wicd-maldições se estiver procurando por algo mais fácil, boa sorte =)

chilicuil
fonte
Eu realmente gostaria de usar o gerenciador de rede, talvez via dbus. Não posso mexer muito com o sistema operacional, pois o programa que estou escrevendo não será executado apenas em minha própria máquina. Toda a configuração, sempre que possível, deve permanecer inalterada.
Stefano Palazzo
1

Você pode conferir o iwconfig e o iwlist:

  • O iwconfig manipula os parâmetros sem fio básicos
  • O iwlist permite iniciar a varredura e listar frequências, taxas de bits, chaves de criptografia ...

Existem muitas opções. Confira Ferramentas sem fio para Linux para mais.

Fernando Briano
fonte
2
Como eu disse, gostaria de integrar com o gerenciador de rede, não substituí-lo.
Stefano Palazzo