【问题标题】:Python Connect to device by wifi on UbuntuPython 在 Ubuntu 上通过 wifi 连接到设备
【发布时间】:2017-07-12 12:56:28
【问题描述】:

欢迎我在 Ubuntu 16.04 上通过 wifi 连接设备时遇到问题。我找到了有人解释如何做到这一点的页面: https://wifi.readthedocs.io/en/latest/wifi_command.html#tutorial

我已经像作者秀一样一步一步走了:

在终端:

$ pip install wifi

sudo wifi 扫描

# wifi connect --ad-hoc essid

然后我写了密码。

但是当我这样做时,我得到了这样的错误:

Traceback(最近一次调用最后一次):

文件“/usr/local/bin/wifi”,第 202 行,在 args.func(args)

文件“/usr/local/bin/wifi”,第 90 行,在 connect_command 方案.activate()

文件“/home/krzysztof/.local/lib/python2.7/site-packages/wifi/scheme.py”,第 172 行,在激活中

subprocess.check_output(['/sbin/ifdown', self.interface], stderr=subprocess.STDOUT)

文件“/usr/lib/python2.7/subprocess.py”,第 574 行,在 check_output 中 raise CalledProcessError(retcode, cmd, output=output)

subprocess.CalledProcessError: 命令'['/sbin/ifdown', 'wlan0']' 返回非零退出状态 1

我确定我写的密码是正确的。

我已经通过使用第二种方式

$ WIFI_CLI_NAME=cool-wifi pip install wifi

但效果是一样的。

【问题讨论】:

    标签: python-2.7 wifi ubuntu-16.04 connect


    【解决方案1】:

    我在 Github 上找到了任一示例代码:

    import wifi
    
    
    def Search():
        wifilist = []
    
        cells = wifi.Cell.all('wlan0')
    
        for cell in cells:
            wifilist.append(cell)
    
        return wifilist
    
    
    def FindFromSearchList(ssid):
        wifilist = Search()
    
        for cell in wifilist:
            if cell.ssid == ssid:
                return cell
    
        return False
    
    
    def FindFromSavedList(ssid):
        cell = wifi.Scheme.find('wlan0', ssid)
    
        if cell:
            return cell
    
        return False
    
    
    def Connect(ssid, password):
        cell = FindFromSearchList(ssid)
    
        if cell:
            savedcell = FindFromSavedList(cell.ssid)
    
            # Already Saved from Setting
            if savedcell:
                savedcell.activate()
                return cell
    
            # First time to conenct
            else:
                if cell.encrypted:
                    if password:
                        scheme = Add(cell, password)
    
                        try:
                            scheme.activate()
    
                        # Wrong Password
                        except wifi.exceptions.ConnectionError:
                            Delete(ssid)
                            return False
    
                        return cell
                    else:
                        return False
                else:
                    scheme = Add(cell)
    
                    try:
                        scheme.activate()
                    except wifi.exceptions.ConnectionError:
                        Delete(ssid)
                        return False
    
                    return cell
    
        return False
    
    
    def Add(cell, password=None):
        if not cell:
            return False
    
        scheme = wifi.Scheme.for_cell('wlan0', cell.ssid, cell, password)
        scheme.save()
        return scheme
    
    
    def Delete(ssid):
        if not ssid:
            return False
    
        cell = FindFromSavedList(ssid)
    
        if cell:
            cell.delete()
            return True
    
        return False
    
    
    if __name__ == '__main__':
        # Search WiFi and return WiFi list
        print Search()
    
        # Connect WiFi with password & without password
        print Connect('OpenWiFi')
        print Connect('ClosedWiFi', 'password')
    
        # Delete WiFi from auto connect list
        print Delete('DeleteWiFi')
    
    enter code here
    

    但是我在编译过程中遇到了错误:

    我已将此文件保存到 polacz.py,然后我制作了 sudo chmod +x polacz.py

    和./polacz.py

    ./polacz.py: linia 6: 出现意外标记的语法错误 ('

    ./polacz.py: linia 6: `def Search():'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多