Linux 15.036 Themen, 107.107 Beiträge

Script für WLAN-Aktivierung

Till3 / 19 Antworten / Baumansicht Nickles

Hallo,
ich habe mein Notebook mit WLAN mit Hilfe des wpa-supplicant eingerichtet. So weit alles gut. Wenn ich jetzt aber den Rechner starte und der WLAN-Router ist ausgeschaltet während Ubuntu 9 bootet, komme ich nicht ins Netz (natürlich), selbst wenn ich nach dem Booten den Router einschalte. Jetzt habe ich mir folgendes Script gebastelt, das ich dann ausführe:

#!/bin/bash
sudo ifdown wlan0
sudo ifup wlan0

Das funktioniert auch, bin danach online und schön.
Jetzt stört mich aber, dass ich dazu mein Passwort eingeben muss, und dass es ca. 20 Sekunden dauert, bis das Script fertig ausgeführt ist. Kann man da an dem einen oder anderen was ändern?
Gruß,
Till
P.S.: Den Network-Manager nutze ich nicht, weil der ja erst nach dem Booten anfängt zu suchen und zu machen, das dauert ewig bis sich der verbunden hat, ich habe keine Lust so lange zu warten.

„We don’t make mistakes here, just happy little accidents“ (Bob Ross)
bei Antwort benachrichtigen
KarstenW Till3 „Script für WLAN-Aktivierung“
Optionen

Der Networkmanager soll auch deinstalliert werden , weil sonst das WLAN Netzwerk nicht mehr richtig funktioniert
Du mußt eine /etc/wpa_supplicant/wpa_supplicant.conf Konfigurationsdatei anlegen.
Das ist hier gut erklärt:

http://wiki.ubuntuusers.de/WLAN/wpa_supplicant?highlight=wpa

Die Unterschiede zwischen Debian und Ubuntu scheinen schon etwas größer zu sein.

Normalerweise ist es so , das sich das Netzwerk automatisch konfiguriert, wenn in der Datei /etc/network/interfaces

allow-hotplug eth0

oder bei dir

allow-hotplug wlan0

steht.

Beispiel Debian lenny:

cat /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.3
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.1
dns-search local


PS: Da Ubuntu auf Debian aufbaut, hilft dir diese Anleitung eventuell auch noch weiter:

http://wiki.debian.org/WPA

Die Netzwerkkonfiguration ist ein sehr gutes Beispiel dafür, warum bei Unix die Konfiguration auf kleine , spezialisierte Programme verteilt wird (und die Konfiguration nicht mit grafischen Programmen wie bei Windows gemacht wird).


PPS: Dieser Netzwerkmanager ist für mich total nutzlos, weil die Konfiguration mit grafischen Programmen sehr unflexibel wird. Ließ mal die manpage zur Konfigurationsdatei /etc/network/interfaces.

man interfaces






Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
Till3 KarstenW „Der Networkmanager soll auch deinstalliert werden , weil sonst das WLAN Netzwerk...“
Optionen

Danke, aber wie gesagt, den wpa-supplicant hatte ich schon erfolgreich konfiguriert.

„We don’t make mistakes here, just happy little accidents“ (Bob Ross)
bei Antwort benachrichtigen
KarstenW Till3 „Danke, aber wie gesagt, den wpa-supplicant hatte ich schon erfolgreich...“
Optionen

Wenn Ubuntu am originalem Debian nichts verändert hat , dann wird jedes Netzwerkinterfaces automatisch aktiviert, bei dem allow-hotplug in der Konfigurationsdatei /etc/network/interfaces steht.
Bei Debian funktioniert es jedenfalls so.
So ein Script brauchst du nicht bei Debian wenn allow-hotplug in der Datei /etc/network/interfaces steht.

Ließ mal die manpage zu interfaces

man interfaces

PS: Diesen Networkmanager braucht man eigentlich überhaupt nicht und ich verstehe auch nicht warum er bei Ubuntu genutzt wird.

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
the_mic KarstenW „Wenn Ubuntu am originalem Debian nichts verändert hat , dann wird jedes...“
Optionen
Diesen Networkmanager braucht man eigentlich überhaupt nicht und ich verstehe auch nicht warum er bei Ubuntu genutzt wird.

Weil er Klickibunti, simpel und bequem ist.
cat /dev/brain > /dev/null
bei Antwort benachrichtigen
Borlander the_mic „ Weil er Klickibunti, simpel und bequem ist.“
Optionen

Abgesehen davon ist das Ding seit Ubuntu 8.10 auch in einem benutzbaren Zustand. Insbesondere auf meinem Notebook würde ich auf diesen Komfort nicht drauf verzichten wollten. Zur vollständigen Glückseligkeit fehlt mir allerdings noch die möglichkeit automatisch einer der statischen IP-Konfigurationen auszuwählen...

Gruß
bor

bei Antwort benachrichtigen
KarstenW Borlander „Abgesehen davon ist das Ding seit Ubuntu 8.10 auch in einem benutzbaren Zustand....“
Optionen

Tja, aber in diesem Fall kann Till3 ihn nicht verwenden.
Also was nützt mir ein Netzwerkmanager wenn dadurch die Netzwerkkonfiguration unflexibel ist ?

"Why?

We want to improve WPA secured networking and location roaming support in Debian. The system service makes it hard to integrate support for packages like NetworkManager, which start instances of wpa_supplicant themselves. We no longer bother with the system service approach in the basic package itself, but delegate this task to more specialised packages. Therefore the wpasupplicant package provides only basic integration for easy (read: non roaming) cases. "

Zum Nachlesen:

http://wiki.debian.org/WPA

Und Ubuntu baut auf Debian auf und deshalb funktioniert der Netzwerkmanager nicht unter Ubuntu , wenn man das Paket wpa_supplicant unter Ubuntu installiert.

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
the_mic KarstenW „Tja, aber in diesem Fall kann Till3 ihn nicht verwenden. Also was nützt mir ein...“
Optionen

Es hat niemand behauptet, dass der Network Manager in jedem Fall und für jeden User die richtige Methode ist.

Du hast lediglich gesagt, dass er unnütz sei, und das stimmt halt definitiv nicht.

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
Acader KarstenW „Wenn Ubuntu am originalem Debian nichts verändert hat , dann wird jedes...“
Optionen
Weil er Klickibunti, simpel und bequem ist.

Genau so ist es !
bei Antwort benachrichtigen
the_mic Till3 „Script für WLAN-Aktivierung“
Optionen

Passwort:
Editiere die Datei /etc/sudoers und füge folgende Zeile ein:
%users ALL = NOPASSWD: /pfad/zu/deinem/skript
Entferne dann die beiden sudo-Aufrufe aus deinem Skript.
Alternativ kannst du auch folgenden Eintrag in die /etc/sudoers machen:
%users ALL = NOPASSWD: /sbin/ifup /sbin/ifdown

Zeit:
Das hängt davon ab, ob ifdown oder ifup relativ lange braucht. Bei ifdown kannst du das so skripten, dass der ifdown-Befehl schon beim Hochfahren ausgeführt wird, wenn die Schnittstelle nicht richtig hochgefahren wurde. Ist halt etwas knifflig.

Alternativ kannst du womöglich auch beides auf einen Schlag umgehen, indem du wpa_supplicant anweist, dass er permanent nach dem Netz scannen soll. Das geht dann halt auf Kosten der Batterielaufzeit, wenn das Netz nicht verfügbar ist und du das WLAN nicht ganz deaktivierst.

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
KarstenW Till3 „Script für WLAN-Aktivierung“
Optionen

Ich weiß jetzt nicht ob du dich genauer mit Debian / Ubuntu beschäftigen willst.
Die Netzwerkkonfiguration ist im Debian Handbuch sehr ausführlich erklärt. Ich denke das du diese Information auch unter Ubuntu verwenden kannst (weil Ubuntu auf Debian aufbaut):

Das Debian System: Konzepte und Methoden (incl. DVD) (Gebundene Ausgabe)
von Martin F. Krafft (Autor)

http://www.amazon.de/Das-Debian-System-Konzepte-Methoden/dp/3937514171/ref=sr_1_1?ie=UTF8&s=books&qid=1247330634&sr=8-1

Gerade für Notebooks gibt es die Möglichkeit mit ifplugd und guessnet die Konfiguration noch flexibler zu gestalten. Ich habe aber im Internet nicht so gute Howtos gefunden.

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
Till3 Nachtrag zu: „Script für WLAN-Aktivierung“
Optionen

Hallo zusammen,
so, ich habe jetzt alle bisherigen Tipps ausprobiert, leider hat keiner geholfen.

@Karsten: ich habe die Zeile eingetragen, hat aber keine Auswirkung.
@the_mic: ich habe beide Alternativen in suoders eingetragen, aber auch ohne Erfolg. Wenn ich mein Skript dann ohne sudo starte, öffnet sich das Terminal und verschwindet sofort wieder, ohne dass sich was tut. Kann das an dem "%users" liegen? Ich habe mal versucht anstatt dessen nur "till" zu nehmen, aber das hat auch keinen Unterschied gemacht. Ich werde mir mal das Wiki zum wpa_supplicant zu Gemüt führen, vielleicht finde ich da die Vorgehensweise für deinen dritten Vorschlag (Batterielaufzeit ist mir wurscht).

Danke!

Gruß,
Till

„We don’t make mistakes here, just happy little accidents“ (Bob Ross)
bei Antwort benachrichtigen
the_mic Till3 „Hallo zusammen, so, ich habe jetzt alle bisherigen Tipps ausprobiert, leider hat...“
Optionen

Gib mal in der Konsole
groups till
ein, wenn till in der Gruppe users drin ist (was er sein sollte), dann spielt's keine Rolle, ob du till oder %users in der sudoers stehen hast.

Öffne mal ein Terminal und tipp dort den Befehl
sudo /sbin/ifdown wlan0
ein. Was passiert?

Eventuell zickt sudo bei der Namensauflösung rum. Ändere die Zeile in der /etc/sudoers zu
%users localhost = NOPASSWD: /sbin/ifup /sbin/ifdown
oder setze anstelle von localhost den aktuellen hostname ein. Was du genau einzugeben hast, gibt dir der Befehl
hostname
an.

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
Till3 the_mic „Gib mal in der Konsole groups till ein, wenn till in der Gruppe users drin ist...“
Optionen

Also:

groups till ergibt
till adm dialout cdrom video plugdev lpadmin admin sambashare
Bin also nicht in users, kann also so nicht gehen, gell?

sudo /sbin/ifdown wlan0 ergibt
There is already a pid file /var/run/dhclient.wlan0.pid with pid 4453
killed old client process, removed PID file
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

wmaster0: unknown hardware address type 801
wmaster0: unknown hardware address type 801
Listening on LPF/wlan0/00:1f:3c:b9:dc:cd
Sending on LPF/wlan0/00:1f:3c:b9:dc:cd
Sending on Socket/fallback
DHCPRELEASE on wlan0 to 192.168.1.1 port 67
* Reloading /etc/samba/smb.conf smbd only
...done.
Und dann bin ich nicht mehr im Netz.

Und hostname ergibt
till-laptop

Ich ergänze also in der sudoers:
%users till-laptop = NOPASSWD: /sbin/ifup /sbin/ifdown
Funktioniert nicht!
Die sudoers sieht so aus:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL) ALL

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

%users till-laptop=NOPASSWD: /sbin/ifup /sbin/ifdown

Was mache ich falsch??
Gruß,
Till



„We don’t make mistakes here, just happy little accidents“ (Bob Ross)
bei Antwort benachrichtigen
the_mic Till3 „Also: groups till ergibt till adm dialout cdrom video plugdev lpadmin admin...“
Optionen
sudo /sbin/ifdown wlan0 ergibt
[..]
Und dann bin ich nicht mehr im Netz.


Das scheint doch zu funktionieren, da kommt keine Passwortabfrage, wenn ich das richtig gesehen habe.
cat /dev/brain > /dev/null
bei Antwort benachrichtigen
Till3 the_mic „ Das scheint doch zu funktionieren, da kommt keine Passwortabfrage, wenn ich das...“
Optionen

Nein, leider doch, habe ich in meiner Antwort verschwiegen.
Wie ist das zu verstehen: muss in meinem Skript das sudo noch drinstehen, es sollte aber keine Abfrage kommen, oder kann ich das sudo aus dem Skript löschen und es funktioniert dann eben auch so?

„We don’t make mistakes here, just happy little accidents“ (Bob Ross)
bei Antwort benachrichtigen
the_mic Till3 „Nein, leider doch, habe ich in meiner Antwort verschwiegen. Wie ist das zu...“
Optionen

Sudo wird lediglich so konfiguriert, dass es nicht mehr nach dem Passwort fragen wird. Der Aufruf von sudo muss also selbstverständlich drinbleiben.

Wenn es ohne Passwort und ohne sudo gehen soll, muss das setuid-Bit gesetzt werden:
sudo chmod +u /sbin/ifup
sudo chmod +u /sbin/ifdown

davon möchte ich aber dringendst abraten, das führt im schlimmsten Fall zu heftigen Sicherheitslücken. setuid ist grundsätzlich böse!

Schreib mal in die /etc/sudoers folgende Zeile:
till till-laptop = NOPASSWD: /sbin/ifup /sbin/ifdown
Wenn du mit %users arbeiten willst, musst du dich schon zur users-Gruppe hinzufügen:
sudo usermod -G users till

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
Till3 the_mic „Sudo wird lediglich so konfiguriert, dass es nicht mehr nach dem Passwort fragen...“
Optionen

Heureka! So geht's. Im Nachhinein ist es natürlich klar, dass es vorher nicht gehen konnte, wenn ich mit %users arbeite, obwohl ich gar nicht dazu gehöre. So, und nun noch abschließend: Sollte ich mich vorsichtshalber zu users hinzufügen, hat das Vor- oder Nachteile? Es gibt außer mir keine weiteren Benutzer.
Also schon mal tausend Dank für die tolle Hilfe! Super!
Gruß,
Till

„We don’t make mistakes here, just happy little accidents“ (Bob Ross)
bei Antwort benachrichtigen
the_mic Till3 „Heureka! So geht s. Im Nachhinein ist es natürlich klar, dass es vorher nicht...“
Optionen

Nein, die Aufnahme in die Gruppe users bringt eigentlich nichts weiter, da diese v.a. dazu dient, Homeverzeichnisse differenziert zugänglich zu machen.

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
KarstenW Till3 „Hallo zusammen, so, ich habe jetzt alle bisherigen Tipps ausprobiert, leider hat...“
Optionen

Der Eintrag allow-hotplug war nur ein Vorschlag. Wahrscheinlich hat Ubuntu sehr viele Veränderungen am originalem Debian gemacht. Wenn du das Paket wpa_supplicant installierst und nutzen willst, dann kannst du den Netzwerkmanager nicht mehr nutzen und mußt ihn deinstallieren.
Die Netzwerkkonfiguration bei Debian ist ganz simple und man braucht diesen Netzwerkmanager überhaupt nicht und man kann ihn nicht nutzen, wenn man das Paket wpa_supplicant installiert.


Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen