Python Wlan Status + An/ausschalten

masterholdy

Neuer User
Mitglied seit
4 Okt 2013
Beiträge
28
Punkte für Reaktionen
0
Punkte
0
Hi Leute,

ich wollte mir via Python (da es auf einen Rasberry Pi laufen soll) ein Programm schreiben um damit:
  1. den Wlan status der FB auszulesen
  2. das Wlan an/ausmachen

Das mit dem Status funktioniert. Das mit dem an/aus machen will nicht

Vllt seht ihr ja einen Fehler
Code:
import urllib.parse,urllib.error,urllib.request,re,hashlib,urllib,sys,requests
url = 'http://192.168.178.1'
pw = 'meinpw'
SSID = 'meinwlanssid'

def login():
    try:

        req = urllib.request.Request(url + "/login_sid.lua")
        resp = urllib.request.urlopen(req)
        respData = resp.read()
        challengereg = re.search(r'<Challenge>(.*)</\Challenge>', respData.decode('utf-8'), re.M|re.I).group(1)
        challengestr = challengereg+"-"+pw
        responsehash = hashlib.md5(challengestr.encode('utf-16le')).hexdigest()
        response = challengereg+"-"+responsehash

        values = {'response' : response,'page': '','username' : ''}
        data = urllib.parse.urlencode(values)
        data = data.encode('utf-8') 
        post = urllib.request.Request(url + "/login_sid.lua",data)
        resp = urllib.request.urlopen(post)
        respData = resp.read()
        sidreg = re.search(r'<SID>(.*)</SID>', respData.decode('utf-8'), re.M|re.I).group(1)
        return(sidreg)
    except Exception as e:
        print(str(e))
        return("Login failed")

def status():
    
    get = urllib.request.Request(url + "/wlan/wlan_settings.lua?sid="+login())
    fbpageresp = urllib.request.urlopen(get)
    fbrespData = fbpageresp.read()

    if 'name="active" checked>&nbsp;<label for="uiView_Active">WLAN-Funknetz aktiv' in  fbrespData.decode('UTF-8'):
        print("W-Lan an!")
    elif 'name="active" >&nbsp;<label for="uiView_Active">WLAN-Funknetz aktiv':
        print("W-Lan aus!")
    else:
        print("Fehler")

def wlanoff():
    sid=login()
    headers = {
    'Origin': url,
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept': '*/*',
    'Referer': url+'/wlan/wlan_settings.lua?sid='+sid,
    'Connection': 'keep-alive',
    }
    data = 'sid='+sid+'&print=&validate=apply&xhr=1'
    requests.post(url+'/wlan/wlan_settings.lua?sid='+sid, headers=headers, data=data)

def wlanon():
    sid=login()
    headers = {
    'Origin': url,
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept': '*/*',
    'Referer': url+'/wlan/wlan_settings.lua?sid='+sid,
    'Connection': 'keep-alive',
    }

    data = 'active=on&SSID='+SSID+'&hidden_ssid=on&sid='+sid+'&print=&validate=apply&xhr=1&wlan:settings/ap_enabled=1'
    requests.post(url+'/wlan/wlan_settings.lua?sid='+sid, headers=headers, data=data)

Ich sitze da schon ein paar Tage dran doch ich komme nicht vorran

:://EDIT habe auch das Probiert, das klappt aber leider nicht

Code:
def wlanon():
    sid=login()
    headers = {
    'Origin': url,
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept': '*/*',
    'Referer': url+'/wlan/wlan_settings.lua?sid='+sid,
    'Connection': 'keep-alive',
    }
    data = 'wlan:settings/ap_enabled=1&sid='+sid
    requests.post(url+'/wlan/wlan_settings.lua?sid='+sid, headers=headers, data=data)
 
Zuletzt bearbeitet:
Ich habe zwar wenig Ahnung von Python, aber das hier sieht falsch aus:

Code:
    data = 'wlan:settings/ap_enabled=1&sid='+sid
    requests.post(url+'/wlan/wlan_settings.lua?sid='+sid, headers=headers, data=data)

Erstens nehmen die meisten Libraries die Variablen in einer URL nicht an, zweitens, warum setzt du die SID zweimal?

Probier mal

Code:
    data = 'wlan:settings/ap_enabled=1&sid='+sid
    requests.post(url+'/wlan/wlan_settings.lua', headers=headers, data=data)

Die SID steht doch schon in data.
 
hm aber das steht da doch auch einmal in der url und einmal in den daten
mt415mexuqcy.jpg

aber ich habe es trotzdem probiert, klappt leider nicht

Edit:// und ich sehe auch gerade das ich das mit dem "wlan:settings/ap_enabled=1" in den post gelassen habe aber nie mitgeschnitten habe das war eigentlich nur ein test :c, klappt natürlich nicht :(
 
Zuletzt bearbeitet:
kann geclosed werden der fehler war das google chrome die sachen nicht richtig mit geschnitten hat mit firefox habe ich direkt die richtigen daten mitgeschnitten bekommen :c
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.