用于RaspberryPi的python脚本自动连接wifi

Viv*_*IML 7 python wifi raspberry-pi

我想用RaspberryPi操作一个WiFi加密狗(它就像没有内置WiFi的CPU).我需要编写一个自动扫描WiFi网络的python脚本,并且需要使用已知的SSID和密码自动建立连接.

这意味着我需要从文件中提供WiFi网络的密码,剩下的就是自动进行扫描和连接.

我从Web上读取了一个包含WiFi SSID名称和密码的文件.

我需要编写一个脚本,扫描并列出当前的网络字,并将其与文件中的SSID相匹配,并进一步自动创建与此已知网络的连接.

RaspberryPi操作系统:Rasbian

roc*_*eza 18

wifi是一个python库,用于扫描和连接到linux上的wifi网络.您可以使用它来扫描和连接到无线网络.

它没有任何内置支持自动连接到网络,但您可以轻松编写脚本来执行此操作.以下是如何执行此操作的基本概念示例.

#!/usr/bin/python
from __future__ import print_function

from wifi import Cell, Scheme

# get all cells from the air
ssids = [cell.ssid for cell in Cell.all('wlan0')]

schemes = list(Scheme.all())

for scheme in schemes:
    ssid = scheme.options.get('wpa-ssid', scheme.options.get('wireless-essid'))
    if ssid in ssids:
        print('Connecting to %s' % ssid)
        scheme.activate()
        break
Run Code Online (Sandbox Code Playgroud)

我刚刚写了它,它似乎工作.就这么你知道,我写了wifi库.如果您希望我将此功能添加到该库,我可以.

  • 嘿@rockymeza,我认为一个自动连接功能可能很棒,特别是对树莓派用户非常有帮助! (2认同)
  • 你在`schemes = list(Scheme.all())`的输出中有什么吗?如果没有,那是因为首先您必须创建方案。请参阅 http://wifi.readthedocs.org/en/latest/scanning.html#connecting-to-a-network 了解更多信息。 (2认同)

Viv*_*IML -2

谢谢大家的回答,我做了如下简单的解决方案

def wifiscan():

   allSSID = Cell.all('wlan0')
   print allSSID # prints all available WIFI SSIDs
   myssid= 'Cell(ssid=vivekHome)' # vivekHome is my wifi name

   for i in range(len(allSSID )):
        if str(allSSID [i]) == myssid:
                a = i
                myssidA = allSSID [a]
                print b
                break
        else:
                print "getout"

   # Creating Scheme with my SSID.
   myssid= Scheme.for_cell('wlan0', 'home', myssidA, 'vivek1234') # vive1234 is the password to my wifi myssidA is the wifi name 

   print myssid
   myssid.save()
   myssid.activate()

wifiscan()   
Run Code Online (Sandbox Code Playgroud)