Wlan Verbindung über ein Python Script wechseln

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo liebe rasp profis,

    ich habe folgende Frage: :helpnew:

    Ich möchte mit einem Python script, welches ich über das terminal einmal starte, einen wechsel von WLAN netzwerk A zu WLAN netzwerk B durchführen.
    Ist dies möglich? Sinn der Sache sollte sein, dass ich einmal das script ausführe, und dann von netzwerk A zu b wechsel. Ich bin leider absolut kein rasp und python kenner..
    Ich kann natürlich auch über den Netzwerkmanager die netzwerke manuell wechseln, ich benötige dies aber innerhalb eines scriptes automatisiert.

    Besten dank vorab, es wäre supernett wenn mir einer weiterhelfen könnte!

    mfg :danke_ATDE:

  • Ich weiß nicht ob es in der Standardlibary von Python etwas für die Wlan verbindung geht, aber selbst wenn nicht, können wir ja Linux die drecksarbeit machen lassen :)

    Code
    import os
    
    
    os.system('Linux Befehl')

    https://wiki.debianforum.de/WLAN_Einrichten

    dürfte selbst für Pythonunkenner einfach zu realisieren sein. Solltest aber deine alte Verbindung vorher schließen....

    Falls noch Fragen aufkommen, her damit...

    Einmal editiert, zuletzt von Citral (21. Juni 2016 um 12:36)


  • ..., einen wechsel von WLAN netzwerk A zu WLAN netzwerk B durchführen.

    Soll, bedingt durch den Wechsel des WLAN-Netzwerkes, das WLAN-Interface deines PI, auch eine andere IP(v4?)-Adresse bekommen? Wenn ja, statisch oder per DHCP?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Ersteinmal schonmal vielen Dank für Eure Hilfe !!!

    Ich denke eine dynamische per DHCP ist okay.

    also bis jetzt hab ich folgendes in meinem Script stehen:

    os.system('sudo ifconfigcwlan0up')
    os.system('sudo iwconfig wlan0 essid MEIN_NETZ key s:PASSWORT')
    os.system('sudo dhclient wlan 0')


    da erhalte ich dann einen error, wenn ich dieses script ausführe
    dieser lautet:
    Error for wireless request "Set ENcode" (8B2A :
    SET failed on device wlan0; invalid argument.

    Einmal editiert, zuletzt von member1001 (22. Juni 2016 um 00:56)

  • os.system('sudo dhclient wlan 0')

    Wegen dhclient, ... welchen PI hast Du bzw. welches Betriebssystem hat dein PI?

    EDIT:

    Wie sind auf deinem PI, die Ausgaben von:

    Code
    ls -la /etc/rc*.d | grep -i networking
    ps aux | grep -i [d]hc
    cat /etc/os-release


    ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (22. Juni 2016 um 09:50)

  • einen Pi 3, raspbian Bertiebssystem.

    der Fehler entsteht m.E. bereits in der Zeile:
    os.system('sudo iwconfig wlan0 essid MEIN_NETZ key s: PASSWORT')

    die ausgaben sind:

    pi@raspberrypi:~ $ ls -la /etc/rc*.d | grep -i networking
    lrwxrwxrwx 1 root root 20 Feb 26 01:12 K06networking -> ../init.d/networking
    lrwxrwxrwx 1 root root 20 Feb 26 01:12 K06networking -> ../init.d/networking
    lrwxrwxrwx 1 root root 20 Feb 26 01:35 S12networking -> ../init.d/networking

    pi@raspberrypi:~ $ ps aux | grep -i [d]hc
    root 423 0.0 0.1 2564 1832 ? Ss 22:27 0:00 /sbin/dhcpcd -q -b

    pi@raspberrypi:~ $ cat /etc/os-release
    PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
    NAME="Raspbian GNU/Linux"
    VERSION_ID="8"
    VERSION="8 (jessie)"
    ID=raspbian
    ID_LIKE=debian
    HOME_URL="http://www.raspbian.org/"
    SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
    BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"


  • einen Pi 3, raspbian Bertiebssystem.

    pi@raspberrypi:~ $ cat /etc/os-release
    PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"

    Da Du jessie hast, könntest Du den Networkmanager bzw. networking deaktivieren (später, d. h. wenn es funktioniert, den NM deinstallieren) und für jedes WLAN-Netzwerk eine wpa_supplicant.conf-Datei/wlanx.service-Datei erstellen.

    Im Script kannst Du dann mit den wlanx.service-Dateien, die eine WLAN-Verbindung unterbrechen und die andere WLAN-Verbindung herstellen. Mit dem dhcpcd.service (restart) kannst Du per Script, dem wlan0-Interface eine neue IPv4-Adresse (per DHCP) zuweisen lassen. Die wlanx.service's sollten nicht beide enabled (d. h. evtl. nur die für das standard-WLAN) sein.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample


  • Hast Du Sonderzeichen im Passwort? Dann würde ich es mal mit einem temporären Passwort ohne Sonderzeichen versuchen, um auszuschließen, daß es daran liegt.

    Nein, keine Sonderzeichen.
    Automatisch zusammengefügt:

    Da Du jessie hast, könntest Du den Networkmanager bzw. networking deaktivieren (später, d. h. wenn es funktioniert, den NM deinstallieren) und für jedes WLAN-Netzwerk eine wpa_supplicant.conf-Datei/wlanx.service-Datei erstellen.

    Im Script kannst Du dann mit den wlanx.service-Dateien, die eine WLAN-Verbindung unterbrechen und die andere WLAN-Verbindung herstellen. Mit dem dhcpcd.service (restart) kannst Du per Script, dem wlan0-Interface eine neue IPv4-Adresse (per DHCP) zuweisen lassen. Die wlanx.service's sollten nicht beide enabled (d. h. evtl. nur die für das standard-WLAN) sein.

    okay, das klingt gut. Aber wie mache ich das?
    Kannst du mir eventuell ein code-beispiel für das script senden?

    Zusätzliche Frage:
    Muss das wirklich so kompliziert sein? Weil aktuell kann ich einfach über den Networkmanager manuell von einem Netzwerk in das andere wechseln. Dies will ich allerdings automatisch mit einem(bzw. innherhalb eines) script machen..d.h. ich benötige innerhalb des scripts welches schon existierst, 2 verschiedene wlan verbindungen, an die ich anweisungen versende.
    Die beiden wpa_supplicant.conf-Dateien müssten doch schon existieren, da ich beide WLAN Netzwerke bereits nutze, allerdings muss ich diese manuell mit den Networkmanager umschalten.

    Kann man den networkmanager nicht irgendwie über das script steuern?

    Vielen Dank vorab!!

    Einmal editiert, zuletzt von member1001 (22. Juni 2016 um 23:04)


  • Die beiden wpa_supplicant.conf-Dateien müssten doch schon existieren, da ich beide WLAN Netzwerke bereits nutze, allerdings muss ich diese manuell mit den Networkmanager umschalten.

    Der NM hat seinen eigenen Dateien. Siehe z. B. die Ausgabe von:

    Code
    ls -la /etc/NetworkManager/system-connections


    Kann man den networkmanager nicht irgendwie über das script steuern?

    Evtl. mit nmcli. Siehe die manpage für nmcli.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample


  • nmcli sagt er im terminal window: command not found

    Lt. der Ausgabe von:

    Code
    apt-cache show network-manager


    sollte u. a. auch:

    Zitat


    This package provides the userspace daemons and a command line interface to
    interact with NetworkManager.


    zur Verfügung gestellt werden.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!