Связывание моего компьютера с Windows с Wi-Fi AP с Python

Я пытаюсь написать python script, который может связать мой компьютер с точкой беспроводного доступа, учитывая имя в виде строки. Например, я могу указать, что я хочу подключиться к linksys, а мой script приведет к тому, что компьютер сделает это.

Я посмотрел на этот вопрос, но не смог понять, что делать, если посмотреть на предоставленные ссылки.

Может ли кто-нибудь указать мне в правильном направлении?

7
29 дек. '12 в 4:17
источник поделиться
3 ответов

Я решил принять предложение Пауло и попробовать использовать Powershell/командную строку. Я нашел статью о подключении к сети через командную строку.

В командной строке вы можете:

netsh wlan connect <profile-name> [name=<ssid-name>]

... где часть name=<ssid-name> является необязательной и обязательно, только если профиль содержит несколько ssids.

Однако похоже, что профиль должен уже существовать на машине, чтобы работа командной строки работала. Я нашел сообщение в форуме о программном создании профиля, но мне не хотелось его опробовать.

Если имя профиля уже существует, то из Python вы можете сделать что-то похожее на следующее:

import subprocess

def connect_to_network(name):
    process = subprocess.Popen(
        'netsh wlan connect {0}'.format(name),
        shell=True,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()

    # Return `True` if we were able to successfully connect
    return 'Connection request was completed successfully' in stdout        

Это несовершенное решение, и я не совсем уверен, что он будет работать в каждом случае, но он действительно работал для моего конкретного случая. Я думал, что опубликую то, что я придумал, если кто-то еще захочет изменить его, чтобы сделать его лучше.

4
29 дек. '12 в 10:09
источник

Ответ, который вы связали, говорит о вызове функций низкого уровня C из Windows API. Вождение с низким уровнем материала заставляет мой мозг болеть.

Существует .Net-оболочка вокруг собственных вызовов C, вы можете использовать этот API более высокого уровня непосредственно из IronPython. К сожалению, это не очень хорошо документировано, но просмотр образца С# и копирование по источникам должны быть проще, чем вызов базового API. Это очень простое решение для Windows, поэтому вы можете быть лучше обслуживаемых powershell.

1
29 дек. '12 в 6:43
источник

Я написал инструмент CLI Python для управления интерфейсом командной строки Wi-Fi. Там есть библиотека в этом проекте, и она должна соответствовать вашим требованиям.

https://github.com/changyuheng/pywinwifi

Там еще одна отдельная библиотека, но я ее никогда не пробовал.

https://github.com/reedcourty/pynetsh

0
20 марта '18 в 21:58
источник

Посмотрите другие вопросы по меткам или Задайте вопрос