-
-
Save taylor224/516de7dd0b707bc0b1b3 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*- | |
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=None): | |
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') |
hi, any body please help
i have struck with the following error when i tried to connect to the Cell(ssid=Vamsi).[Cell(ssid=SPVF), Cell(ssid=Vamsi), Cell(ssid=Guest), Cell(ssid=ACT_Dlink3Pole)]
Traceback (most recent call last):
File "/home/pi/Desktop/configread.py", line 104, in
print(Connect('Vamsi', '12345678'))
File "/home/pi/Desktop/configread.py", line 49, in Connect
scheme = Add(cell, password)
File "/home/pi/Desktop/configread.py", line 81, in Add
scheme.save()
File "/home/pi/.local/lib/python3.5/site-packages/wifi/scheme.py", line 135, in save
with open(self.interfaces, 'a') as f:
PermissionError: [Errno 13] Permission denied: '/etc/network/interfaces'
Did you find solution for this
Struck Here Some Help Please
cells = wifi.Cell.all('wlan0')
Traceback (most recent call last):
File "", line 1, in
File "G:\Python\lib\site-packages\wifi\scan.py", line 38, in all
iwlist_scan = subprocess.check_output(['/sbin/iwlist', interface, 'scan'],
File "G:\Python\lib\subprocess.py", line 411, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "G:\Python\lib\subprocess.py", line 489, in run
with Popen(*popenargs, **kwargs) as process:
File "G:\Python\lib\subprocess.py", line 854, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "G:\Python\lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
Struck Here Some Help Please
cells = wifi.Cell.all('wlan0')
Traceback (most recent call last):
File "", line 1, in
File "G:\Python\lib\site-packages\wifi\scan.py", line 38, in all
iwlist_scan = subprocess.check_output(['/sbin/iwlist', interface, 'scan'],
File "G:\Python\lib\subprocess.py", line 411, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "G:\Python\lib\subprocess.py", line 489, in run
with Popen(*popenargs, **kwargs) as process:
File "G:\Python\lib\subprocess.py", line 854, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "G:\Python\lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
It is because you are on windows 10.
I am looking for the interface to enter for windows 10 too ...
this is needed root access only?
any idea without root access?
Struck Here Some Help Please
cells = wifi.Cell.all('wlan0')
Traceback (most recent call last):
File "", line 1, in
File "G:\Python\lib\site-packages\wifi\scan.py", line 38, in all
iwlist_scan = subprocess.check_output(['/sbin/iwlist', interface, 'scan'],
File "G:\Python\lib\subprocess.py", line 411, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "G:\Python\lib\subprocess.py", line 489, in run
with Popen(*popenargs, **kwargs) as process:
File "G:\Python\lib\subprocess.py", line 854, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "G:\Python\lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specifiedIt is because you are on windows 10.
I am looking for the interface to enter for windows 10 too ...
did you found any solution?
Struck Here Some Help Please
cells = wifi.Cell.all('wlan0')
Traceback (most recent call last):
File "", line 1, in
File "G:\Python\lib\site-packages\wifi\scan.py", line 38, in all
iwlist_scan = subprocess.check_output(['/sbin/iwlist', interface, 'scan'],
File "G:\Python\lib\subprocess.py", line 411, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "G:\Python\lib\subprocess.py", line 489, in run
with Popen(*popenargs, **kwargs) as process:
File "G:\Python\lib\subprocess.py", line 854, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "G:\Python\lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specifiedIt is because you are on windows 10.
I am looking for the interface to enter for windows 10 too ...did you found any solution?
Yes:
Here you are (old code that worked a long time ago^^)
import os
from sys import platform
import time
if platform in ["win32", "linux"]:
import pywifi
from pywifi import const
import subprocess
import re
def main(ssid, psk, timeout):
print("Wifi connecting: SSID {0} ".format(ssid))
if ssid == get_current_wifi():
print("Wifi already connected to {0}".format(ssid))
return
connect_wifi(ssid, psk, int(timeout))
def create_wifi_interface():
print("Creating wifi interface")
wifi = pywifi.PyWiFi()
return wifi.interfaces()[0]
def disconnect_wifi(timeout, interface):
print("Disconnect wifi")
interface.disconnect()
t_0 = time.time()
while not (interface.status() in [const.IFACE_DISCONNECTED,
const.IFACE_INACTIVE]):
if time.time() - t_0 > timeout:
raise TimeoutError
time.sleep(0.1)
print(".", end="")
print("Disconnect wifi succes!")
def connect_wifi(ssid, psk, timeout):
print("Connect wifi for {0}".format(platform))
interface = create_wifi_interface()
disconnect_wifi(timeout, interface)
profile = pywifi.Profile()
profile.ssid = ssid
profile.auth = const.AUTH_ALG_OPEN
profile.akm.append(const.AKM_TYPE_WPA2PSK)
profile.cipher = const.CIPHER_TYPE_CCMP
profile.key = psk
interface.remove_all_network_profiles()
tmp_profile = interface.add_network_profile(profile)
interface.connect(tmp_profile)
t_0 = time.time()
while not (interface.status() == const.IFACE_CONNECTED):
if time.time() - t_0 > timeout:
raise TimeoutError
time.sleep(0.1)
print(".", end="")
print("\n", "Connect wifi succes!")
def get_current_wifi():
print("Get current wifi for {0}".format(platform))
ssid = ""
if platform == "win32": # Windows
try:
ssid = get_current_wifi_windows()
except subprocess.CalledProcessError:
pass
elif platform == "linux":
try:
ssid = get_current_wifi_linux()
except AttributeError:
pass
else:
raise OSError
print("Current ssid {0}".format(ssid))
return ssid
def get_current_wifi_linux():
network_information = os.popen('/sbin/iwconfig | grep ESSID').read()
ssid = re.search('ESSID:"(.*)"', network_information).group(1)
return ssid
def get_current_wifi_windows():
network_information = str(subprocess.check_output(["netsh", "wlan", "show", "network"]))
network_information = network_information.replace('\\r', '')
network_information = network_information.replace("b' ", '')
network_information = network_information.replace(":", '\n')
network_information = network_information.replace("\\n", '\n')
network_information = network_information.splitlines()
ssid = network_information[6][1:]
return ssid
To make it work on windows 10 just use:
subprocess.check_output(["netsh", "wlan", "show", "network"])
Hi, I am getting this error. What may be wrong?
[Cell(ssid=mySSID)]
Traceback (most recent call last):
File "/home/pi/wifi_con.py", line 89, in <module>
print(Connect('mySSID', '@key12345'))
File "/home/pi/wifi_con.py", line 34, in Connect
savedcell.activate()
File "/home/pi/.local/lib/python3.9/site-packages/wifi/scheme.py", line 172, in activate
subprocess.check_output(['/sbin/ifdown', self.interface], stderr=subprocess.STDOUT)
File "/usr/lib/python3.9/subprocess.py", line 424, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "/usr/lib/python3.9/subprocess.py", line 528, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/sbin/ifdown', 'wlan0']' returned non-zero exit status 1.
Guys…can you give me pls an answer of this question…my devise is not rooted..
Can this script run without any problems ???
run ifconfig , and see ur interface, it is likely not wlan0, but something like wlp2s0