Beerholm
Anmeldungsdatum: 22. Februar 2012
Beiträge: Zähle...
|
Hallo zusammen, seit ich Xubuntu nutze, habe ich einige Probleme mit dem WLAN. Bis die Verbindung hergestellt wurde, kann es unterschiedlich lange dauern, manchmal „nur“ 2 Minuten, im schlimmsten Fall habe ich nach 10 oder 15 Minuten immer noch keine Verbindung. Das Signal des Netzwerks wird schon direkt nach dem Hochfahren erkannt (Signalstärke meist 2 von 4). Ich bilde mir ein, dass es die Verbindungsherstellung beschleunigt, wenn ich das Funknetzwerk deaktiviere und danach wieder aktiviere. Vielleicht stimmt das aber auch nicht. Wenn ich dann verbunden bin, läuft alles normal, wobei ich den Eindruck habe, dass die Geschwindigkeit unter winXP ein wenig höher war (stört mich nicht sonderlich). Das große Problem ist, dass ich oft sehr lange warten muss, was unter winXP nie der Fall war (Verbindung war immer beim Hochfahren schon hergestellt). Ich wohne in einem Wohnheim und kann nichts an den Routern oder am WLAN selbst einstellen. Mitbewohner, die Windows nutzen, haben dieses Problem nicht. MSI Notebook M670 (schon etwas alt) Network controller: Ralink corp. RT2561/RT61 rev B 802.11 g unter Netzwerkverbindungen, allgemein: Treiber: rt61pci Sicherheit: WEP Ich habe keine Ahnung, welche von den vielen Terminal-Befehlen ich hier angeben soll, denn es ist ja nicht so, dass das Internet überhaupt nicht funktioniert. Bei Tipps bitte sehr ausführliche Beschreibungen, bin noch wenig vertraut mit Linux. Herzlichen Dank!!!
|
praseodym
Supporter
Anmeldungsdatum: 9. Februar 2009
Beiträge: 22106
Wohnort: ~
|
Hallo und willkommen bei uu.de. Poste alle Terminal-Ausgaben aus diesem Thread in Codeblöcken zur "Diagnose". Gruss praseodym
|
Beerholm
(Themenstarter)
Anmeldungsdatum: 22. Februar 2012
Beiträge: 4
|
So ich habe alles in eine Datei kopiert... WLAN-Problem im Wohnheim Bearbeitet von "Elektronenblitz63": Syntax. Verwende bitte Codeblöcke für die Terminalausgaben damit alles gut lesbar ist oder verwende unseren Paste-Service. Ich habe das mal für dich gemacht. Siehe dazu auch Forum/Syntax. Anhang gelöscht.
|
elektronenblitz63
Anmeldungsdatum: 16. Januar 2007
Beiträge: 29307
Wohnort: NRW
|
Hallo, gib die MAC-Adresse (BSSID) des empfangsstärksten Zugangspunktes (AP) mit im Konfigurationsprofil an. Das wäre momentan Cell 5:
Cell 05 - Address: 00:21:91:1D:7F:0C
Channel:6
Frequency:2.437 GHz (Channel 6)
Quality=52/70 Signal level=-58 dBm
Encryption key:on
ESSID:"FHHMA" Verbindungen bearbeiten:
gksu nm-connection-editor
Der Manager hat ansonsten ein Problem mit mehreren gleichnamigen Netzen im Empfangsbereich.
|
Beerholm
(Themenstarter)
Anmeldungsdatum: 22. Februar 2012
Beiträge: 4
|
Ok, ich habe also diese Adresse: 00:21:91:1D:7F:0C bei den Einstellungenen im Reiter "Funknetzwerk" bei "BSSID" eingetragen. Danach gespeichert, Neustart. Nach 12 Minuten keine Verbindung. Nochmal Neustart, dann nach 8 Minuten Verbindung hergestellt. Das scheint es noch nicht gewesen zu sein, ist nach wie vor sehr unbefriedigend...
|
elektronenblitz63
Anmeldungsdatum: 16. Januar 2007
Beiträge: 29307
Wohnort: NRW
|
Ein Neustart des Systems ist nicht erforderlich, was soll das bei einer einfachen Konfigurationsänderung auch bringen? Ist der genannte AP vom Empfang her jetzt immer noch optimal? Genauere Informationen stehen wieder im Log
dmesg | grep wlan0
egrep -i 'net|wlan|reason|firm' /var/log/syslog
WLAN Verbindungsskript(zur besseren Diagnose bei Verbindungsproblemen) Das Skript ermöglicht eine manuelle Verbindungsaufnahme zu einem WLAN-Accesspoint/WLAN-Router. Der Network-Manager und auch Wicd werden automatisch gesteuert und müssen nicht manuell deaktiviert werden. Je nach Bedarf kann WEP- oder WPA1/2-Verschlüsselung gewählt werden. Verschiedene Debug-Modi mit direkter Bildschirmausgabe oder über eine Protokolldatei zur besseren Fehlerdiagnose sind möglich. Skript anlegen
Datei über Terminal anlegen und ausführbar machen:
touch WLAN_con.sh
chmod +x WLAN_con.sh Mit einem Editor öffnen. Unter KDE, Xubuntu bzw. Lubuntu wird ein anderer Editor verwendet. Siehe Wikilink!
Folgenden Inhalt einfügen und abspeichern:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605 | #!/bin/bash
## WLAN Verbindungsskript
## elektronenblitz63 ubuntuusers.de 2012
## published under GPL v3
##
## Version 1.0.4.2 vom 31. Januar 2014
## komplette Überarbeitung
##
## statische IP-Konfiguration in Kombination mit -d möglich
## Fehler bei Option -d behoben
## Ausgaben verbessert
##
## Version 1.0.3.4 vom 29. Juli 2012
## Prüfung auf laufenden Wicd-Manager
## verbesserte Reaktivierung der Dienste bei -stop
## bekannte, bereits automatisch erfasste Konfiguration starten / Startoption -a
## Pingtest am Ende der Konfiguration
## div. kleinere Anpassungen / Code verbessert
##
## Version 1.0.3.3 vom 26. Juli 2012
## Fehler bei Option -Aw behoben
##
## Version 1.0.3.2 vom 09. Juli 2012
## automatische Konfiguration hinzugefügt
## nach Ende des Debug-Modus (Startoption -f) kann der Network-Manager direkt aktiviert werden
##
## Version 1.0.2.3 vom 05. Juli 2012
## Zugangsschlüssel (PSK/WEP-Key) werden bei der Ausgabe nicht mehr öffentlich angezeigt
## Konfiguration wpa_supplicant im Deklarationsblock
##
## Version 1.0.2.2 vom 26. Februar 2012
## Debug-Modus verbessert. Kleinere Fehler beseitigt.
##
## Skript
##
## freie Variablen
##
## Ethernet-Schnittstelle (LAN-Interface)
laniface="eth0"
## Schnittstellenkonfiguration WLAN-Interface
wlaniface="wlan0"
## Konfiguration der Accesspoints
#
## Accesspoint Konfiguration
## bei manueller Konfiguration oder WEP-verschlüsselung anpassen!
# SSID (Name) des WLAN Accesspoints eintragen
# Beispiel:
# ssid="Easy-Box-123456"
ssid=""
# MAC-Adresse des WLAN Accesspoints eintragen
## bei manueller Konfiguration oder WEP-verschlüsselung anpassen!
# Beispiel:
# mac="00:15:0E:31:7A:1A"
mac=""
## statische Konfiguration für das WLAN-Interface (Optional)
## Startoption -s
address="192.168.178.6"
netmask="255.255.255.0"
broadcast="192.168.178.255"
gateway="192.168.178.1"
# Einstellungen zur Verschlüsselung (WPA1 und/oder WPA2)
# die Vorgabe deckt im Normalfall alle Konfigurationsmöglichkeiten ab
# Konfiguration wpa-supplicant
proto="WPA RSN"
key_mgmt="WPA-PSK"
pairwise="TKIP CCMP"
group="TKIP CCMP"
## Konfiguration wpa_supplicant
# Einstellungen müssen in der Regel nicht angepasst werden
configfile=wpa_supplicant.tmp
ctrliface="ctrl_interface=/var/run/wpa_supplicant"
eapolv="eapol_version=1"
apscan="ap_scan=1"
# Treiber für wpa_supplicant
wpadriver="wext"
## DHCP-Client
dhcpclient="dhclient"
## manuelle DNS (drei DNS Einträge, 1xDomain und 1xSearch sind möglich) - Startoption -D
# Beispiel:
# dns="nameserver 192.168.178.1 nameserver 192.168.178.1 nameserver 192.168.178.1 domain fritz.box search fritz.box"
dns="nameserver 8.8.4.4 nameserver 8.8.8.8 nameserver 213.73.91.35"
## Pause bevor eine IP-Adresse angefordert wird
## diese Zeit in Sek. bleibt wpa_supplicant für den Verbindungsaufbau
connectsleep=15
## Pause in Sekunden für Konfigurationsparameter
## Vorgabewert 2
configdelay=2
## Desktop
# (x/l)ubuntu=1
# kubuntu=0
ubuntu=1
## verwendetes Terminalprogramm
# kde > konsole
# xfce > mousepad oder xterm
# gnome > gnome-terminal oder xterm
term=xterm
## Terminaloptionen
## hier größe des Fensters für die Scanergebnisse
termoptions="-geometry 70x50"
## hier größe des Fensters für den Debugmodus
termoptions1="-geometry 130x50"
## verwendeter Editor
# Standard nano
editor=nano
# Option „Datei nur lesen"
editoptions="-v"
## Konfiguration Debugmodus
# Dauer des Verbindungsversuchs in Sekunden
debugtime=45
# Protokolldatei
debugfile="WLAN_con_debug.txt"
# Dateien für die aut. Konfiguration
scanoutfile="WLAN_con_Scan_Output.txt"
keyfile="WLAN_con_keyfile.txt"
# Konfiguration Pingtest
localeping="/bin/ping"
pingcount=1
desta="ubuntuusers.de"
destb="213.95.41.11"
destc="google.com"
# Path to rfkill / Options
rfkill=/usr/sbin/rfkill
wlandevice=wifi
## Ende freie Variablen
## Startoptionen
D=0
H=0
d=0
w=0
f=0
s=0
knownconf=0
autoconf=1
clear
echo "Gewählte Optionen:"
while getopts ":hDdwfFas" OPTION ; do
case $OPTION in
D) echo "D - manueller DNS"; D=1 knownconf=1 autoconf=0;;
d) echo "d - WPA-Supplicant im Debug-Modus"; d=1 f=0 knownconf=1 autoconf=0;;
f) echo "f - WPA-Supplicant im Debug-Modus, Protokolldatei wird angelegt"; f=1 d=0 knownconf=1 autoconf=0;;
w) echo "w - WEP-Verschlüsselung aktiviert"; w=1 autoconf=0;;
a) echo "a - gespeicherte Konfiguration verwenden"; knownconf=1 autoconf=0;;
s) echo "s - statische Konfiguration der WLAN-Schnittstelle"; s=1 knownconf=1 autoconf=0;;
h) echo "h - Hilfe angefordert"; H=1;;
esac
done
if [ "$H" = "1" ]; then
echo Verwendung: WLAN_con.sh [-start] [-restart] [-stop] [-h] [-D] [-d] [-f] [-w]
echo Syntax:
echo "./WLAN_con.sh startet mit Standardparametern, wie [-start]"
echo "./WLAN_con.sh -start -w startet mit Standardparametern und verwendet WEP-Verschlüsselung"
echo "./WLAN_con.sh -restart erneuert die Verbindung über DHCP"
echo "./WLAN_con.sh -d startet im Debug-Modus. Informationen zum Verbindungsaufbau werden in einem Terminalfenster angezeigt."
echo "./WLAN_con.sh -ds startet im Debug-Modus. Statische Schnittstellenkonfiguration."
echo "./WLAN_con.sh -ads startet im Debug-Modus mit bekannter WLAN-Konfiguration. Statische Schnittstellenkonfiguration."
echo "./WLAN_con.sh -f startet im Debug-Modus. Informationen zum Verbindungsaufbau werden in einer Datei gespeichert."
echo "./WLAN_con.sh -restart -D erneuert die Verbindung über DHCP, verwendet manuelle DNS"
echo "./WLAN_con.sh startet mit automatischer Konfiguration. WLAN Umgebung wird gescannt, Zugangskennwort wird abgefragt. (Standard)"
echo "./WLAN_con.sh -a startet die bereits erfasste Konfiguration."
echo "sudo ./WLAN_con.sh -stop beendet die WLAN-Verbindung"
echo "Ende"
exit
fi
# ungültige Kombination / Startoption -w
if [ "$w" = "1" ]; then
echo -e "\nBei WEP-Verschlüsselung müssen die SSID und die MAC-Adresse manuell in das Skript eingetragen werden!"
if [ "$autoconf" = "1" ]; then
autoconf=0
echo "WEP-Verschlüsselung in Kombination mit einer automatischen Konfiguration ist nicht möglich!"
echo "Automatische Konfiguration deaktiviert."
fi
if [ "$knownconf" = "1" ]; then
knownconf=0
echo "WEP-Verschlüsselung in Kombination mit einer automatischen Konfiguration, Startoption -a, ist nicht möglich!"
echo "Automatische Konfiguration deaktiviert."
fi
fi
if [ "$s" = "1" ]; then
echo -e "\ns - statischen Konfiguration nur in Kombination mit -a und -d möglich, Optionen zusätzlich aktiviert"
echo "a - startet die bereits erfasste und gespeicherte Konfiguration (aut. erneute Abfrage falls erforderlich)"
echo "d - WPA-Supplicant im Debug-Modus"
knownconf=1
d=1
fi
## be root if not
test `id -u` -eq 0 || exec sudo "$0" "$@"
echo -e "\nstarte gewählte Konfiguration ..."
input=""
# WLAN aktivieren
$rfkill unblock $wlandevice
# Powermanagement deaktivieren
/sbin/iwconfig $wlaniface power off
if [ "$1" != "-start" ]; then
echo -e "\nstoppe alle Dienste, und Verbindungen ..."
# Wicd Check
wicdrun=$(ps aux | grep -o [w]icd-daemon)
if [ "$wicdrun" = "wicd-daemon" ]; then
echo "aktiven" $wicdrun "gefunden!"
service wicd stop
echo -e "Nach einem\033[0;0;36m ./WLAN_con.sh -stop\033[0;0m wird das Skript versuchen den Dienst neu zu starten."
echo -e "Alternativ kann der Manager kann nach Abschluß der Tests durch ein\033[0;0;36m sudo service wicd start\033[0;0m manuell reaktiviert werden."
echo
fi
defgw=$(route -n | grep UG | awk {'print $2'})
echo "lösche vorhandene Route "$defgw
/sbin/route del default gw $defgw $wlaniface
echo '' | tee /etc/resolv.conf
killall wpa_supplicant
sleep $configdelay
/sbin/ifconfig $wlaniface down
sleep $configdelay
/sbin/ifconfig $laniface down
## Restart Network-Manager - beende WLAN-Verbindung
if [ "$1" = "-stop" ]; then
echo -e "\nVersuche die ursprüngliche Konfiguration wiederherzustellen ..."
echo "reaktiviere Network-Manager."
sleep $configdelay
service network-manager start
service network-manager restart
killall $editor
# Wicd Check
wicdrun=$(ps aux | grep -o [w]icd-client)
if [ "$wicdrun" = "wicd-client" ]; then
service wicd start
fi
echo "WLAN Konfiguration beendet."
exit
fi
fi
# Konfiguration
ip link set $laniface down
ip route del
service network-manager stop
sleep 1
killall wpa_supplicant
killall $dhcpclient
sleep $configdelay
/sbin/ifconfig $wlaniface down
sleep $configdelay
/sbin/ifconfig $wlaniface up
sleep $configdelay
killall $editor
echo
# bekannte Konfiguration starten / Startoption -a
if [ "$knownconf" = "1" ]; then
# Default-Cell auslesen
input=$(grep Default_Cell $(pwd)/$scanoutfile | awk {'print $2'})
if [ "$input" = "" ]; then
autoconf=1
echo -e "Konfiguration unvollständig, Accesspoint/Gateway noch nicht ausgewählt. Starte Abfrage ...\n"
fi
fi
# aut. Konfiguration
if [ "$autoconf" = "1" ]; then
# Dateicheck / WLAN Scan
filecheck=$(find $(pwd)/$scanoutfile)
if [ "$filecheck" = "" ]; then
echo -e "\nScanne die WLAN-Umgebung. Einen Moment bitte ..."
iwlist $wlaniface scan | egrep 'Cell|ESSID' > $(pwd)/$scanoutfile
echo "Scan abgeschlossen. Ergebnisse wurden in" $(pwd)/$scanoutfile "abgelegt."
else
echo "Scannergebnisse wurden bereits erfasst! Vorgang wiederholen? [j|n]"
read input
if [ "$input" = "n" ]; then
echo "Verwende gespeicherte Scanergebnisse."
else
echo -e "\nScanne die WLAN-Umgebung. Einen Moment bitte ..."
iwlist $wlaniface scan | egrep 'Cell|ESSID' > $(pwd)/$scanoutfile
echo "Scan abgeschlossen. Ergebnisse wurden in" $(pwd)/$scanoutfile "abgelegt."
fi
fi
outputcheck=$(cat $(pwd)/$scanoutfile)
if [ "$outputcheck" = "" ]; then
echo -e "\nAnscheinend wurden keine WLAN-Netze in der Umgebung erkannt!"
echo "starte das Skript neu um erneut zu Scannen, oder"
echo "trage die SSID und MAC-Adresse des WLAN-Accesspoints manuell in das Skript ein, oder"
echo "beende den Vorgang uns stelle die Systemeinstellungen mit ./WLAN_con.sh -stop wieder her."
exit 0
fi
# Einträgeg der Default-Konfiguration entfernen
sed -i "/Standard Access-Point/d" $(pwd)/$scanoutfile
sed -i "/Default_Cell=/d" $(pwd)/$scanoutfile
sed -i "/Default_SSID=/d" $(pwd)/$scanoutfile
sed -i "/Default_MAC=/d" $(pwd)/$scanoutfile
# Scanergebnisse anzeigen
if [ "$ubuntu" = "1" ]; then
/usr/bin/$term $termoptions -e "$editor $editoptions $(pwd)/$scanoutfile" &> /dev/null &
else
/usr/bin/$term $termoptions -e "$editor $editoptions $(pwd)/$scanoutfile" &> /dev/null &
fi
# Netz auswählen
maxcell=$(grep Cell $(pwd)/$scanoutfile | awk {'print $2'})
echo -e "\nWLAN-Netze gefunden ..."
echo -e "Folgende Funkzellen (Cell) \033[0;0;33m"$maxcell"\033[0;0m können ausgewählt werden."
echo "Mit welchem der gefundenen WLAN-Netze (Cell) soll eine Verbindung hergestellt werden?"
echo "Eingabe mit führender Null wie angezeigt!"
read input
echo -e "\nStandard Access-Point:\nDefault_Cell=" $input >> $(pwd)/$scanoutfile
# MAC-Adresse auslesen
mac=$(egrep "Cell $input" $scanoutfile | awk {'print $5'})
# SSID filtern
if [ "$input" -lt "10" ]; then
checkinput=$(echo $input | cut -c2-3)
fi
if [ "$checkinput" != "0" ]; then
checkinput=$(($checkinput - 1))
fi
if [ "$checkinput" -lt "0" ]; then
checkinput=$(($input - 1))
fi
deletelines="1,"$checkinput
if [ "$input" = "01" ]; then
deletelines="2"
fi
ssid=$(egrep -m $input "ESSID" $(pwd)/$scanoutfile | cut -c27-70 | tr -d '"' | sed -e "$deletelines"'d')
echo "Default_SSID= $ssid" >> $(pwd)/$scanoutfile
echo "Default_MAC= $mac" >> $(pwd)/$scanoutfile
input=""
# Infozeile
echo -e "\nVersuche eine Verbindung mit \033[0;0;33m$ssid\033[0;0m / \033[0;0;33m$mac\033[0;0m herzustellen."
fi
# WEP-Verschlüsselung verwenden / Startoption -w
if [ "$w" = "1" ]; then
echo -e "\nVerwende WEP-Verschlüsselung"
echo -e "\nSuche gespeicherten Zugangsschlüssel."
wkey=$(grep WEP-Key= $(pwd)/$keyfile | awk {'print $2'})
if [ "$wkey" != "" ]; then
echo -e "WEP-Key \033[0;0;33m$wkey\033[0;0m gefunden. Vorhandenen Schlüssel verwenden [j|n]?"
read input
fi
if [ "$input" = "j" ]; then
echo "verwende bereits erfassten WEP-Key"
else
# WEP-Zugangsschlüssel erfassen
# alten Eintrag für WEP-Key entfernen
sed -i "/WEP-Key=/d" $(pwd)/$keyfile
echo -e "\nNeuen WEP-Zugangsschlüssel erfassen (hex-Code) => ENTER"
read wkey
echo "WEP-Key= $wkey" >> $(pwd)/$keyfile
fi
fi
# WPA/2-Verschlüsselung verwenden
echo -e "\nVerwende WPA1/2-Verschlüsselung"
echo -e "\nSuche gespeicherten Zugangsschlüssel PSK."
psk=$(grep PSK= $(pwd)/$keyfile | awk {'print $2'})
# PSK auslesen
if [ "$psk" != "" ]; then
echo -e "PSK gefunden. Vorhandenen Schlüssel verwenden [j|n]?"
read input
fi
if [ "$input" = "j" ]; then
echo "Verwende gespeicherten PSK Zugangsschlüssel."
else
# PSK erfassen
# alten Eintrag für PSK entfernen
sed -i "/PSK=/d" $(pwd)/$keyfile
echo "Pre-Shared-Key erfassen (WPA/WPA2 Zugangsschlüssel) - Verdeckte Eingabe => Enter:"
read -ers psk
echo "PSK= $psk" >> $(pwd)/$keyfile
fi
# Plausibilitätsprüfung WEP-Schlüssel
if [ "$w" = "1" ]; then
keycheck=$(echo $wkey | egrep -o [A-Fa-f0-9])
keycheck=$(echo $keycheck | tr -d " ")
keylenght=$(expr length $keycheck | egrep -wo '10|26')
keylenght=$[keylenght +1]
if [ $keycheck != $wkey ]; then
echo "Unzulässige Zeichen im WEP-Schlüssel. [a-f] [A-F] [0-9] (hex-Code) sind erlaubt"
exit
elif [ $keylenght = 1 ]; then
echo "Länge des gewählten WEP-Schlüssels fehlerhaft, 10 Zeichen (64bit) oder 26 Zeichen (128bit) sind erlaubt"
exit
fi
fi
# Konfiguration auslesen
if [ "$knownconf" = "1" ]; then
echo "Verwende bekannte Konfiguration."
ssid=$(grep "Default_SSID=" $scanoutfile | awk {'print $2'})
mac=$(grep "Default_MAC=" $scanoutfile | awk {'print $2'})
fi
if [ "$ssid" = "" ]; then
echo "Netzwerk-SSID nicht definiert, beende Programmablauf."
exit 0
if [ "$mac" = "" ]; then
echo "MAC-Adresse des Accesspoint (BSSID) nicht definiert, beende Programmablauf."
exit 0
fi
fi
## WLAN-Verbindung vorbereiten
# WPA/WPA2-Verschlüsselung
if [ "$w" = "0" ]; then
echo -e "\nLege temporäre Konfigurationsdatei $configfile an ..."
echo -e "\nVerwendete Konfiguration:\n"
echo $ctrliface | tee $configfile
echo $eapolv | tee -a $configfile
echo $apscan | tee -a $configfile
echo 'network={' | tee -a $configfile
echo ssid='"'$ssid'"' | tee -a $configfile
echo bssid=$mac | tee -a $configfile
echo proto=$proto | tee -a $configfile
echo key_mgmt=$key_mgmt | tee -a $configfile
echo pairwise=$pairwise | tee -a $configfile
echo group=$group | tee -a $configfile
echo "psk=**********"
echo psk='"'$psk'"' >> $configfile
echo '}' | tee -a $configfile
# WEP-Verschlüsselung
else
echo -e "WEP-Verschlüsselung gewählt. Übernehme manuell eingetragene Konfigurationdaten.\n"
echo -e "\nVersuche eine Verbindung mit \033[0;0;33m" $ssid"\033[0;0m / \033[0;0;33m"$mac"\033[0;0m herzustellen.\n"
echo $ctrliface | tee $configfile
echo 'network={' | tee -a $configfile
echo ssid='"'$ssid'"' | tee -a $configfile
echo bssid=$mac | tee -a $configfile
echo "key_mgmt=NONE" | tee -a $configfile
echo wep_key0="$wkey" >> $configfile
echo wep_key="**********"
echo wep_tx_keyidx=0 | tee -a $configfile
echo '}' | tee -a $configfile
fi
echo
echo -e "Starte WLAN-Verbindungsaufbau ...\n"
# Debug-Modus / Protokollierung
if [ "$f" = "1" ]; then
echo -e "protokolliere Verbindungsvorgang für "$debugtime" Sekunden, bitte warten ...\n"
/usr/bin/$term -e "/sbin/wpa_supplicant -i $wlaniface -D $wpadriver -c $configfile -d > $debugfile" &> /dev/null &
sleep $debugtime
killall wpa_supplicant
echo -e "Protokollierung beendet. Informationen wurden in "$(pwd)/$debugfile" abgelegt.\n"
echo "Soll der Network-Manager wieder aktiviert werden? [j|n]"
read answer
if [ "$answer" = "j" ]; then
echo -e "\nStarte Network-Manager ..."
service network-manager start
fi
echo "Beende Skript."
exit 0
fi
# Debug-Modus / ohne Protokollierung
if [ "$d" = "1" ]; then
/usr/bin/$term -e "/sbin/wpa_supplicant -i $wlaniface -D $wpadriver -c $configfile -d" &> /dev/null &
echo "Warte auf Verbindung, einen Moment bitte ..."
sleep $connectsleep
# aut. Konfiguration (DHCP)
if [ "$s" = "0" ]; then
echo -e "\nautomatische Konfiguraton der WLAN-Schnittstelle über DHCP"
echo -e "\nFordere IP-Adresse an ...\n"
/sbin/dhclient -4 $wlaniface
fi
# statische Konfiguration
if [ "$s" = "1" ]; then
echo -e "\nStatische Konfiguraton der WLAN-Schnittstelle ..."
/sbin/ifconfig $wlaniface $address broadcast $broadcast netmask $netmask
/sbin/route add default gw $gateway $wlaniface
# DNS-Einträge erzeugen
if [ "$D" = "0" ]; then
echo '# erzeugt durch WLAN_con.sh / statische Konfiguration' | tee /etc/resolv.conf
echo "nameserver" $gateway | tee -a /etc/resolv.conf
fi
fi
fi
# Daemon-Modus
if [ "$d" = "0" ]; then
/sbin/wpa_supplicant -i $wlaniface -D $wpadriver -c $configfile -B
echo -e "Warte auf Verbindung ($connectsleep Sekunden), einen Moment bitte ...\n"
sleep $connectsleep
echo -e "Fordere IP-Adresse an ...\n"
/sbin/dhclient $wlaniface
sleep $configdelay
fi
# manuelle DNS - Startoption -D
if [ "$D" = "1" ]; then
echo
echo "setze manuelle DNS, überschreibe /etc/resolv.conf"
echo '# erzeugt durch WLAN_con.sh' | tee /etc/resolv.conf
echo $dns | awk {'print $1,$2'} | tee -a /etc/resolv.conf
echo $dns | awk {'print $3,$4'} | tee -a /etc/resolv.conf
echo $dns | awk {'print $5,$6'} | tee -a /etc/resolv.conf
echo $dns | awk {'print $7,$8'} | tee -a /etc/resolv.conf
echo $dns | awk {'print $9,$10'} | tee -a /etc/resolv.conf
sleep $configdelay
fi
# Ausgabe der Konfiguration. Einstellungen der Schnittstellen,
# Routingtabelle und DNS anzeigen
echo "aktuelle Konfiguration ..."
echo -e "\nSystemkonfiguration: /etc/resolv.conf\n"
/bin/cat /etc/resolv.conf
echo
/sbin/route -n
echo -e "\nKonfiguration WLAN:"
/sbin/ifconfig $wlaniface | egrep 'Link|inet Adresse'
echo
/sbin/iwconfig $wlaniface
# ping über das WLAN-Interface
echo "Pingtest:"
$localeping -c $pingcount -I $wlaniface $(route -n | grep UG | awk {'print $2'})
$localeping -c $pingcount -I $wlaniface $desta
$localeping -c $pingcount -I $wlaniface $destb
$localeping -c $pingcount -I $wlaniface $destc
echo -e "\n\033[0;0;36mKonfiguration beendet. Einstellungen überprüfen, Datenübertragung und Internetzugang testen!\033[0;0;0m"
exit 0
|
manuelle Grundeinstellungen
Im Bereich zwischen ...
## freie Variablen
...
## Ende freie Variablen
... können verschiedene Parameter eingestellt werden.
Nachfolgende Einstellungen sind nicht erforderlich (automatische Konfiguration)!
Wird Xu-,Lu- oder Kubuntu verwendet, so muss das Konsolenprogramm und ein Parameter für die Desktopversion ggf. manuell gesetzt werden.
# Desktop
# (x/l)ubuntu=1
# kubuntu=0
ubuntu=0
...
## verwendetes Terminalprogramm
# kde > konsole
# xfce > mousepad oder xterm
# gnome > gnome-terminal oder xterm
term=konsole aut. Konfiguration
Standardmäßig wird eine automatische Konfiguration durchgeführt. Eine Startoption ist nicht erforderlich. Nur die Angaben zur verwendeten Schnittstelle sollten kontrolliert und bei Bedarf angepasst werden. Das Skript scannt die WLAN-Umgebung und bietet eine Auswahl der erkannten WLAN-Netze in der Umgebung an. Danach wird der Zugangsschlüssel (PSK) abgefragt. Die Eingabe erfolgt verdeckt und ohne Bilschirmecho, so wie bei der Eingabe des Systemkennworts! Die Einstellungen werden nun gespeichert und müssen im Regelfall nur einmalig vorgenommen werden. Bei erneutem Start des Skripts werden die zuvor erfassten Einstellungen ausgelesen. gespeicherte Konfiguration
Startoption -a Wurde das Skript bereits einmal ausgeführt, kann die so erfasste und gespeicherte Konfiguration dann mit Option -a erneut ausgeführt werden. Ein Scan der WLAN-Umgebung, die manuelle Auswahl des Netzwerks und die Abfrage des Zugangskennworts (PSK) ist dann nicht erforderlich. Die benötigten Informationen werden aus den zuvor gespeicherten Konfigurationsdateien ausgelesen. statische Schnittstellenkonfiguration
Startoption -s Die WLAN-Schnittstelle wird statisch konfiguriert. Die IP-Adresse, Netzmaske, Broadcast-Adresse und Gateway sind im Skript bei Bedarf entsprechen anzupassen. Eine statische Konfiguration ist nur in Kombination mit dem Debug-Modus (Startoption -d) möglich. Dies wird geprüft und ggf. aut. aktiviert. EinschränkungenIst die SSID, also der Name des AP unsichtbar (SSID Broadcast off), muss eine manuelle Konfiguration verwendet werden. WEP-Verschlüsselung kann in diesem Fall ebenfalls nicht verwendet werden.
Verschlüsselung
Das Skript unterstützt gemischte WPA1/2-Verschlüsselung und erkennt aut. reine WPA1- oder WPA2-Verschlüsselung. WPA2-AES (CCMP) ist die z.Z. sicherste Variante. Der Router sollte entsprechend eingestellt sein.
das Skript muss mit Option -w gestartet werden soll WEP Verschlüsselung verwendet werden soll WPA- bzw. WPA2-Verschlüsselung verwendet werden, darf die Startoption -w nicht gesetzt werden bei Bedarf kann die Konfiguration für den Supplicanten auch angepasst werden. Erläuterungen dazu in WLAN/wpa supplicant nur bestimmte Zeichen sind im Zugangsschlüssel (PSK) erlaubt
Fehlererkennung
Startoption -d (Diagnose-Modus mit Verbindungsversuch)
Startoption -f (Debug-Modus mit eingeschränktem Verbindungsversuch)
mit Startoption -f werden die Informationen zum Verbindungsversuch in einer Protokolldatei abgelegt eine IP-Adresse wird nicht angefordert (reiner Debug-Modus zur Fehlerdiagnose). die Protokolldatei kann bei Bedarf anschießend kopiert und zur genaueren Diagnose über unseren Paste-Service hochgeladen werden, oder ... manuell kontrolliert, oder ... über das weiter unten beschriebene Diagnoseskript ausgewertet werden
Manuelle DNS
(optional) Startoption -D setzt die voreingestellten manuellen DNS
Hilfe
Startoption -h gibt nur eine kurze Hilfe zum Skript aus und beendet dann den Programmablauf. Skript starten und beenden./WLAN_con.sh # das gewünschte WLAN-Netz und das zugehörige Zugangskennwort (PSK) werden erfasst und gespeichert
./WLAN_con.sh -a # zuvor gespeicherte Daten werden verwendet
./WLAN_con.sh -stop # beendet die Verbindung und das Skript, reaktiviert den Network-Manager Falls das Skript hängt oder vergeblich auf die Zuweisung eine IP-Adresse wartet, kann der Ablauf einfach mit
Strg +
C beendet werden. Skript starten
./WLAN_con.sh # normaler Start mit WPA/WPA2-Verschlüsselung ohne Debug-Modi (automatische Konfiguration)
./WLAN_con.sh -af # gespeicherte Konfiguration laden und Debug-Modus (es wird keine vollständige Verbindung hergestellt)
./WLAN_con.sh -ad # gespeicherte Konfiguration laden und Diagnose-Modus
./WLAN_con.sh -ads # Debug-Modus mit bekannter WLAN-Konfiguration. Statische Schnittstellenkonfiguration."
./WLAN_con.sh -wd # Start mit WEP-Verschlüsselung und Diagnose-Modus
./WLAN_con.sh -stop # beendet die Verbindung und das Skript, reaktiviert den Network-Manager Mögliche Startoptionen/Kombinationen:
./WLAN_con.sh [-start] [-restart] [-stop] [-d] [-D] [-h] [-f] [-w] [-A] [-a] [-s]
./WLAN_con.sh -start # automatische Konfiguration / Erfassung der verfügbaren Netzwerke / Abfragen des Zugangsschlüssels / nur WPA1 oder WPA2!
./WLAN_con.sh # automatische Konfiguration
./WLAN_con.sh -start -a # gespeicherte Konfiguration / die bereits erfasste Konfiguration wird erneut verwendet
./WLAN_con.sh -af # gespeicherte Konfiguration / Debug-Modus
./WLAN_con.sh -start -w # WEP-Verschlüsselung
./WLAN_con.sh -start -wfd # WEP-Verschlüsselung / Debug-Modus mit Protokoll / Option -d wirkungslos
./WLAN_con.sh -restart -dDw # Restart im Debug-Modus (Terminal, kein Protokoll), manuelle(r) DNS und WEP-Verschlüsselung
./WLAN_con.sh -stop # beendet die Verbindung und aktiviert wieder den Network-Manager Der Network-Manager und Wicd, sofern installiert, werden direkt über das Skript gesteuert. Um die Verbindung zu trennen, den Manager wieder zu aktivieren und gestartete Instanzen des Supplicanten zu beenden, muss das Skript abschließend mit …
… aufgerufen werden. Fehler / ProblemeESSID wird nicht gefunden
Wird das Skript mit automatischer Konfiguration gestartet, kann es beim Scann der WLAN-Umgebung zu einer unvollständigen Ausgabe kommen. Bei schwachem Empfang ist der Scan möglicherweise unvollständig und die ESSID wird nicht einwandfrei übermittelt. Die Ausgabe sieht dann vielleicht so aus (Beispiel):
...
Cell 4 - Address: 00:06:0E:D2:48:26
ESSID:"FRITZ!Box Fon WLAN 7170"
Cell 5 - Address: 00:14:BA:CA:A2:49
Cell 6 - Address: 78:35:2A:13:26:65
ESSID:"NETGEAR"
...
Ist nun gerade Cell 5 das gesuchte Netz und wird ausgewählt, so verwendet das Skript die nachfolgende ESSID von Cell 6, da diese ja bei Cell 5 fehlt. In diesem Fall sollte das Skript neu gestartet und der Scan wiederholt werden. Alternativ manuell konfigurieren und ESSID und MAC-Adresse in das Skript eintragen. Grundsätzlich könnte der Empfang dann aber wohl schon grenzwertig, also schlecht sein, oder wird gestört. DNS fehlerhaft
Ab Ubuntu 12.04 ist das Paket resolvconf wieder standardmäßig im System vorinstalliert. Sollten die entsprechenden Einträge in der /etc/resolv.conf fehlerhaft sein, die aktuelle Konfiguration wird am Ende des Skripts angezeigt, so kann das Skript mit Startoption -D aufgerufen werden. Dann werden die im Skript voreingestellten DNS in die /etc/resolv.conf eingetragen. Vorhandene Einträge werden überschrieben. Diagnoseskript
Über ein weiteres kleines Skript kann die zuvor mit Startoption -f oder -Af (empfohlen) erzeugte Datei in begrenztem Rahmen ausgewertet werden. Im Zweifelsfall sollte die vollständige Protokolldatei, wie bereits weiter oben beschrieben, über unseren Paste-Service zur Durchsicht hochgeladen und im Forum verlinkt werden. Skript anlegen
Datei anlegen und ausführbar machen
touch WLAN_con_diag.sh
chmod +x WLAN_con_diag.sh Bearbeiten ...
... und folgenden Inhalt einfügen: #!/bin/bash
## WLAN Schnelldiagnose für WLAN Verbindungsskript WLAN_con.sh
##
## elektronenblitz63 ubuntuusers.de 2012
## published under GPL v3
##
## Version 0.0.0.3 vom 09. Juli 2012
##
## Skript
##
## freie Variablen
##
# Protokolldatei
if [ "$1" = "" ]; then
debugfile="WLAN_con_debug.txt"
else
debugfile=$1
fi
diagoutfile="WLAN_con_diag.txt"
## verwendetes Terminalprogramm
term=xterm
## Terminaloptionen
## hier größe des Fensters für die Ausgabe
termoptions="-geometry 90x50"
## verwendeter Editor
editor=nano
# Option „Datei nur lesen"
editoptions="-v"
### Diagnose
## AP Suche
echo -e " Diagnose der Protokolldatei "$debugfile"\n" > $diagoutfile
echo -e " Werden mehrere Zeilen je Abschnitt ausgegeben,\n deutet dies auf grundsätzliche Verbindungsprobleme hin!" >> $diagoutfile
echo >> $diagoutfile
echo " Scantest / wird der gesuchte AP gefunden?" >> $diagoutfile
echo " Zeile Status" >> $diagoutfile
scancheck=$(cat -nT $debugfile | egrep 'No suitable AP found.' >> $diagoutfile)
if [ "$scancheck" != "" ]; then
if [ "$scancheck" != "No suitable AP found" ]; then
echo -e " Der gesuchte AP wurde nicht gefunden!\n" >> $diagoutfile
echo -e " Der Empfang ist möglicherweise grenzwertig,\n oder wird gestört." >> $diagoutfile
## Terminal/Editor öffnen / Ausgabe
/usr/bin/$term $termoptions -e "$editor $editoptions $diagoutfile" &> /dev/null &
## Ende
echo "Schnelldiagnose beendet."
exit 0
fi
fi
scancheck=$(cat -nT $debugfile | egrep 'SCANNING -> ASSOCIATING' >> $diagoutfile)
if [ "$scancheck" != "" ]; then
echo >> $diagoutfile
echo -e " Der gesuchte AP wurde nicht gefunden!\n" >> $diagoutfile
else
echo -e " Der gesuchte AP wurde gefunden!\n" >> $diagoutfile
fi
## Verbindung?
echo " Verbindungstest. Wird eine erste Verbindung zum AP aufgebaut?" >> $diagoutfile
echo " Zeile Status" >> $diagoutfile
connection=$(cat -nT $debugfile | egrep 'ASSOCIATING -> ASSOCIATED' >> $diagoutfile)
if [ "$connection" != "" ]; then
echo >> $diagoutfile
echo -e " Die Verbindung wurde nicht aufgebaut!\n" >> $diagoutfile
else
echo -e " Die Verbindung wurde aufgebaut!\n" >> $diagoutfile
fi
## Authentifikation ok?
echo " Authentifizierung. Wird die Verbindung zum AP vollständig hergestellt?" >> $diagoutfile
echo " Zeile Status" >> $diagoutfile
authentication=$(cat -nT $debugfile | egrep '4-Way Handshake failed - pre-shared key may be incorrect' >> $diagoutfile)
authentication=$(cat $debugfile | egrep -o '4-Way Handshake failed - pre-shared key may be incorrect')
if [ "$authentication" != "" ]; then
echo >> $diagoutfile
echo -e " Die Authentifikation war nicht erfolgreich!" >> $diagoutfile
echo -e " Das Zugangskennwort (PSK) scheint falsch oder fehlerhaft zu sein!\n" >> $diagoutfile
echo "Schnelldiagnose beendet." >> $diagoutfile
/usr/bin/$term $termoptions -e "$editor $editoptions $diagoutfile" &> /dev/null &
echo "Schnelldiagnose beendet."
exit 0
fi
authentication=$(cat -nT $debugfile | egrep 'GROUP_HANDSHAKE -> COMPLETED' >> $diagoutfile)
authentication=$($authentication | awk {'print $3;$4;$5'})
if [ "$authentication" = "" ]; then
echo -e " Die Authentifikation war erfolgreich!\n" >> $diagoutfile
fi
## verwendete Verschlüsselung
echo -e " Verwendete Verschlüsselungsmethode:" >> $diagoutfile
encryption=$(cat -nT $debugfile | egrep 'Key negotiation completed' >> $diagoutfile)
echo >> $diagoutfile
pairwise_cipher=$(cat $debugfile | egrep 'Key negotiation completed' | awk {'print $7'} | tr -d '[')
echo " Paarweise Verschlüsselung (pairwise cipher): "$pairwise_cipher >> $diagoutfile
group_cipher=$(cat $debugfile | egrep 'Key negotiation completed' | awk {'print $8'} | tr -d ']')
echo -e " Gruppenverschlüsselung (group cipher): "$group_cipher >> $diagoutfile
## Terminal/Editor öffnen / Ausgabe
/usr/bin/$term $termoptions -e "$editor $editoptions $diagoutfile" &> /dev/null &
## Ende
echo "Schnelldiagnose beendet."
exit 0 Skript startenDie Ausgabe mit entsprechenden Informationen wird in einem extra Fenster angezeigt. Siehe Screenshots im Anhang.
- Bilder
|
Beerholm
(Themenstarter)
Anmeldungsdatum: 22. Februar 2012
Beiträge: 4
|
Die Neustarts waren notwendig, um zu sehen, ob es eine Veränderung bringt. Denn: Wenn die Verbindung einmal hergestellt ist, dann kann ich trennen und danach wieder verbinden ohne dieses ewige Abwarten. Keine Ahnung, warum. Letzten Endes habe ich es geschafft, das Skript anzulegen. Und es scheint zu funktionieren. Wenn ich mit "./WLAN_con.sh -wd" starte geht es wohl ein wenig schneller als mit "./WLAN_con.sh -w". Nur bei -wd kann ich das Fenster des Supplicant (wpa_supplicant.tmp -d) nicht mehr schließen. Ist das normal? Jetzt würde ich das Skript gerne automatisch beim Hochfahren starten. Hab mal bei Automatisch gestartete Anwendungen einen neuen Eintrag mit dem Befehl zum Starten des Skripts erstellt. Geht nicht ☺ Wie kann ich das machen? Auf jeden Fall vielen Dank, jetzt hab ich in weniger als 1 Minute zuverlässig eine Verbindung!
|
elektronenblitz63
Anmeldungsdatum: 16. Januar 2007
Beiträge: 29307
Wohnort: NRW
|
Beerholm schrieb: Letzten Endes habe ich es geschafft, das Skript anzulegen. Und es scheint zu funktionieren. Wenn ich mit "./WLAN_con.sh -wd" starte geht es wohl ein wenig schneller als mit "./WLAN_con.sh -w". Nur bei -wd kann ich das Fenster des Supplicant (wpa_supplicant.tmp -d) nicht mehr schließen. Ist das normal?
Von der Funktion her macht das absolut keinen Unterschied. Das Fenster schließt sich bei -stop oder wenn der Supplicant-Prozess manuell beendet wird. Nachtrag: das Skript wurde aktualisiert, ein paar kleinere Fehler wurden ausgemerzt Achte auf die Terminalausgabe des Supplicanten und stoppe die Zeit bis eine Verbindung hergestellt wurde. Siehe Sreenshot im Anhang und achte auf „... authentication completet successfully“ (die restlichen Ausgaben weichen u.U. etwas ab, da hier eine Verbindung mit WPA-Verschlüsselung aufgebaut wurde). Erst danach sollte dhclient versuchen eine IP-Adresse anzufordern. Der Parameter connectsleep des Skripts in Sekunden …
## Pause bevor eine IP-Adresse angefordert wird
## diese Zeit in Sek. bleibt wpa_supplicant für den Verbindungsaufbau
connectsleep=15
…muss entsprechend angepasst werden. Trage die ermittelte Zeit ein und gib eine kleine zusätzliche Karenz von ca. zwei Sekunden hinzu.
Jetzt würde ich das Skript gerne automatisch beim Hochfahren starten. Hab mal bei Automatisch gestartete Anwendungen einen neuen Eintrag mit dem Befehl zum Starten des Skripts erstellt. Geht nicht ☺ Wie kann ich das machen?
Lege zwei Starter an
gksu /home/<Benutzer>/WLAN_con.sh -start -w
gksu /home/<Benutzer>/WLAN_con.sh -stop
Oder trage den Startbefehl in rc.local ein und lege nur einer Starter zum stoppen des Skriptes an.
- Bilder
|