root/morphix/trunk/scripts-main/wlcardconfig

Revision 2, 9.6 kB (checked in by nextime, 2 years ago)

Initial import, branching from morphix svn

  • Property svn:executable set to
Line 
1 #!/bin/sh
2 # wlcardconfig - A very light-weight text-based wireless configuration tool.
3 # (C) Eckhard Rüggeberg Sep 2002
4 # based on  netcardconfig - (C) Klaus Knopper Jun 2001
5 #
6 # $Id: wlcardconfig 410 2004-04-12 00:06:03Z paul_c $
7 #
8
9 PATH="/bin:/sbin:/usr/bin:/usr/sbin"
10 export PATH
11
12 XDIALOG_HIGH_DIALOG_COMPAT=1
13 export XDIALOG_HIGH_DIALOG_COMPAT
14
15 [ "`id -u`" != "0" ] && exec sudo "$0" "$@"
16
17 TMP="/tmp/wlconfig.tmp$$"
18 OPTSFILE=/etc/pcmcia/wireless.opts
19
20 # Ende mit Schrecken
21 bailout(){
22     rm -f "$TMP"
23     exit $1
24 }
25
26 # Schreibe unsere Zeile
27 writeline(){
28     OURLINE=""
29     if [ -n "$NWID" ]; then
30         iwconfig $WLDEV nwid "$NWID"
31         OURLINE="$OURLINE NWID=\"$NWID\";"
32     fi
33     if [ -n "$MODE" ]; then
34         iwconfig $WLDEV mode "$MODE"
35         OURLINE="$OURLINE MODE=\"$MODE\";"
36     fi
37     if [ -n "$CHANNEL" ]; then
38         iwconfig $WLDEV channel "$CHANNEL"
39         OURLINE="$OURLINE CHANNEL=\"$CHANNEL\";"
40     fi
41     if [ -n "$FREQ" ]; then
42         iwconfig $WLDEV freq "$FREQ"
43         OURLINE="$OURLINE FREQ=\"$FREQ\";"
44     fi
45     if [ -n "$KEY" ]; then
46         iwconfig $WLDEV key "$KEY"
47         OURLINE="$OURLINE KEY=\"$KEY\";"
48     fi
49     if [ -n "$IWCONFIG" ]; then
50         iwconfig $WLDEV $IWCONFIG
51         OURLINE="$OURLINE IWCONFIG=\"$IWCONFIG\";"
52     fi
53     if [ -n "$IWSPY" ]; then
54         iwspy $WLDEV $IWSPY
55         OURLINE="$OURLINE IWSPY=\"$IWSPY\";"
56     fi
57     if [ -n "$IWPRIV" ]; then
58         iwpriv $WLDEV $IWPRIV
59         OURLINE="$OURLINE IWPRIV=\"$IWPRIV\";"
60     fi
61     # ESSID als letztes ausführen, aber als erstes eintragen
62     if [ -n "$ESSID" ]; then
63         iwconfig $WLDEV essid "$ESSID"
64         OURLINE="ESSID=\"$ESSID\"; $OURLINE"
65     fi
66     OURLINE="*,*,*,"$HWADDR") "$OURLINE" ;;"
67     echo $OURLINE >> $OPTSFILE
68 }
69
70 # Welchen Dialog benutzen wir ?
71 DIALOG="dialog"
72 [ -n "$DISPLAY" ] && [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog"
73
74
75 # Setze LANGUAGE usw.
76 [ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
77
78
79 # Setze die Meldungen
80 case "$LANGUAGE" in
81     de|at|ch)
82         MESSAGE0="Keine Wireless-Netzwerkkarte gefunden."
83         MESSAGE1="Konfiguration der Wireless-Parameter von"
84         MESSAGE2="Bitte Wireless-Netzwerkkarte auswählen"
85         MESSAGE3="Bitte konfigurieren Sie vorher die IP-Parameter der Karte !"
86         MESSAGE4="Geben Sie die ESSID für"
87         MESSAGE5="ein\n\n\n(leer für 'any', nicht zu empfehlen !!)\n"
88         MESSAGE6="Geben Sie ggf. die NWID (Cell Identifier)\nfür"
89         MESSAGE7="ein, falls es eine gibt\n\n\n"
90         MESSAGE8="Geben Sie den Modus für"
91         MESSAGE9="ein\n\n(Managed(=default), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n"
92         MESSAGE10="Geben Sie den Kanal für"
93         MESSAGE11="ein\n\n(0 bis 16, leer für auto oder Frequenz-\neingabe im nächsten Fenster)\n"
94         MESSAGE12="Geben Sie die Frequenz für"
95         MESSAGE13="ein\n\n(z.B. 2.412G, leer für auto)"
96         MESSAGE14="Geben Sie den Verschlüsselungs-Key\nfür"
97         MESSAGE15="ein\n\n(leer für Klartext, nicht zu empfehlen !!)"
98         MESSAGE16="Geben Sie ggf. zusätzliche Parameter für\n'iwconfig"
99         MESSAGE17="' ein, z.B.\n\n\nsens -80  rts 512  frag 512  rate 5.5M"
100         MESSAGE18="Geben Sie ggf. zusätzliche Parameter für\n'iwspy"
101         MESSAGE19="' ein\n\n\n"
102         MESSAGE20="Geben Sie ggf. zusätzliche Parameter für\n'iwpriv"
103         MESSAGE21="' ein\n\n\n"
104         NWC="Netzwerkkarte_"
105         ;;
106     es)
107         MESSAGE0="No se ha encontrado una tarjeta inalámbrica."
108         MESSAGE1="Configuración de los parámetros inalámbricos para"
109         MESSAGE2="Por favor, seleccione un dispositivo de red inalámbrico"
110         MESSAGE3="Por favor, configure primero los parámetros de la IP para la interfaz"
111         MESSAGE4="Teclee el ESSID para"
112         MESSAGE5="\n\n\n(vacío para 'cualquiera', ¡no recomendado!)\n"
113         MESSAGE6="Teclee el NWID (identificador de celda)\npara"
114         MESSAGE7=", si es necesario\n\n\n"
115         MESSAGE8="Teclee el modo para"
116         MESSAGE9="\n\n(Managed(=por_defecto), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n"
117         MESSAGE10="Teclee el número del canal para"
118         MESSAGE11="\n\n(0 bis 16, vacío para auto o si lo prefiere\n teclee la frecuencia seguidamente)\n"
119         MESSAGE12="Teclee la frecuencia para"
120         MESSAGE13="\n\n(ej. 2.412G, vacío para auto)"
121         MESSAGE14="Teclee la clave de encriptación\npara"
122         MESSAGE15="\n\n(vacío para texto plano, ¡¡no recomendado!!)"
123         MESSAGE16="Teclee los parámetros adicionales para\n'iwconfig"
124         MESSAGE17="' Si es necesario, ej.\n\n\nsens -80  rts 512  frag 512  rate 5.5M"
125         MESSAGE18="Teclee los parámetros adicionales para\n'iwspy"
126         MESSAGE19="' si es necesario\n\n\n"
127         MESSAGE20="Teclee los parámetros adicionales para\n'iwpriv"
128         MESSAGE21="' si es necesario\n\n\n"
129         NWC="tarjeta_de_red_"
130         ;;
131     *)
132         MESSAGE0="No wireless network card found."
133         MESSAGE1="Configuration of wireless parameters for"
134         MESSAGE2="Please select wireless network device"
135         MESSAGE3="Please configure IP parameters of the interface first"
136         MESSAGE4="Enter the ESSID for"
137         MESSAGE5="\n\n\n(empty for 'any', not recommended !)\n"
138         MESSAGE6="Enter the NWID (cell identifier)\nfor"
139         MESSAGE7=", if needed\n\n\n"
140         MESSAGE8="Enter the mode for"
141         MESSAGE9="\n\n(Managed(=default), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n"
142         MESSAGE10="Enter channel number for"
143         MESSAGE11="\n\n(0 bis 16, empty for auto or if you want to\n enter the frequency next)\n"
144         MESSAGE12="Enter the frequency for"
145         MESSAGE13="\n\n(e.g 2.412G, empty for auto)"
146         MESSAGE14="Enter the encryption key\nfor"
147         MESSAGE15="\n\n(empty for cleartext, not recommended !!)"
148         MESSAGE16="Enter additional parameters for\n'iwconfig"
149         MESSAGE17="' if needed, e.g.\n\n\nsens -80  rts 512  frag 512  rate 5.5M"
150         MESSAGE18="Enter additional parameters for\n'iwspy"
151         MESSAGE19="' if needed\n\n\n"
152         MESSAGE20="Enter additional parameters for\n'iwpriv"
153         MESSAGE21="' if needed\n\n\n"
154         NWC="network_card_"
155         ;;
156 esac
157
158
159 # Gibt es überhaupt Wireless Karten ?
160 WLDEVICES=`grep -v "|" /proc/net/wireless | awk -F: '{print $1}'`
161
162 if [ -z "$WLDEVICES" ]; then
163     $DIALOG --msgbox "$MESSAGE0" 10 50
164     bailout
165 fi
166
167
168 # Suche eine der Wireless Karten aus, wenn es mehrere gibt,
169 # sonst (oder bei Übergabe des Namens durch netcardconfig) nur Bestätigung
170 SECOND=`echo $WLDEVICES |  awk '{print $2}'`
171 if [ -n "$1" ]; then
172     SECOND=""
173     WLDEVICES="$1"
174 fi
175 if [ -z "$SECOND" ]; then
176     # Es gibt nur eine
177     WLDEV=`echo $WLDEVICES |  awk '{print $1}'`
178     $DIALOG --msgbox "$MESSAGE1 $WLDEV" 10 50
179 else
180     DEVICELIST=""
181     for DEVICE in $WLDEVICES; do
182         NUMBER="${DEVICE##eth}"
183         NUMBER="${NUMBER##wlan}"
184         DEVICELIST="$DEVICELIST ${DEVICE} $NWC${NUMBER}"; done
185     $DIALOG --menu "$MESSAGE2" 18 45 12 $DEVICELIST 2>"$TMP" || bailout
186     read WLDEV <"$TMP" ; rm -f "$TMP"
187 fi
188
189
190 # Ist sie schon als Netzwerkkarte konfiguriert ?
191 HWADDR=`/sbin/ifconfig $WLDEV 2>/dev/null | head -1 | awk  '{print $NF}'`
192 if [ -z "$HWADDR" ]; then
193     $DIALOG --msgbox "$MESSAGE3" 10 50
194     bailout
195 fi
196
197
198 # Ist schon ein wireless.opt von uns angelegt ?
199 ESSID=""; NWID=""; MODE=""; CHANNEL=""; FREQ=""; SENS=""; RATE=""; KEY=""; RTS=""; FRAG=""
200 IWCONFIG=""; IWSPY=""; IWPRIV=""
201 MAGIC=`grep "MaGiC nUmBeR" $OPTSFILE`
202 if [ -z "$MAGIC" ]; then
203     # noch keins von uns
204     OUR="NO"
205 else
206     # ist schon von uns, also nach der aktuellen Karte suchen und Variablen extrahieren
207     OUR="YES"
208     OURLINE=`grep $HWADDR $OPTSFILE | awk -F")" '{print substr($2, 1, length($2) -3)}'`
209     [ -n "$OURLINE" ] && eval "$OURLINE"
210 fi
211
212
213 # Jetzt haben wir u.U. die Vorgaben aus der letzten Konfiguration dieser Karte,
214 # die wir als Startwerte nehmen
215 $DIALOG --inputbox "$MESSAGE4 $WLDEV $MESSAGE5" 15 50 "$ESSID" 2>"$TMP" || bailout 1
216 read ESSID <"$TMP" ; rm -f "$TMP"
217 [ -z "$ESSID" ] && ESSID="any"
218
219 $DIALOG --inputbox "$MESSAGE6 $WLDEV $MESSAGE7" 15 50 "$NWID" 2>"$TMP" || bailout 1
220 read NWID <"$TMP" ; rm -f "$TMP"
221
222 $DIALOG --inputbox "$MESSAGE8 $WLDEV $MESSAGE9" 15 50 "$MODE" 2>"$TMP" || bailout 1
223 read MODE <"$TMP" ; rm -f "$TMP"
224
225 $DIALOG --inputbox "$MESSAGE10 $WLDEV $MESSAGE11" 15 50 "$CHANNEL" 2>"$TMP" || bailout 1
226 read CHANNEL <"$TMP" ; rm -f "$TMP"
227
228 if [ -z $CHANNEL ]; then
229     $DIALOG --inputbox "$MESSAGE12 $WLDEV $MESSAGE13" 15 50 "$FREQ" 2>"$TMP" || bailout 1
230     read FREQ <"$TMP" ; rm -f "$TMP"
231 fi
232
233 $DIALOG --inputbox "$MESSAGE14 $WLDEV $MESSAGE15" 15 50 "$KEY" 2>"$TMP" || bailout 1
234 read KEY <"$TMP" ; rm -f "$TMP"
235
236 $DIALOG --inputbox "$MESSAGE16 $WLDEV$MESSAGE17" 15 50 "$IWCONFIG" 2>"$TMP" || bailout 1
237 read IWCONFIG <"$TMP" ; rm -f "$TMP"
238
239 $DIALOG --inputbox "$MESSAGE18 $WLDEV$MESSAGE19" 15 50 "$IWSPY" 2>"$TMP" || bailout 1
240 read IWSPY <"$TMP" ; rm -f "$TMP"
241
242 $DIALOG --inputbox "$MESSAGE20 $WLDEV$MESSAGE21" 15 50 "$IWPRIV" 2>"$TMP" || bailout 1
243 read IWPRIV <"$TMP" ; rm -f "$TMP"
244
245 set -x
246 # Jetzt schreiben wir die Parameter weg. Wenn wir wireless.opts noch nicht selber
247 # geschrieben hatten, ist das kein Problem. Wenn doch, müssen wir die neue Zeile
248 # reinfrickeln...
249 if [ "$OUR" = "NO" ]; then
250         rm $OPTSFILE
251         echo "# Wireless LAN adapter configuration file /etc/pcmcia/wireless.opts"       > $OPTSFILE
252         echo "# written by wlcardconfig (C) Eckhard Rüggeberg"                          >> $OPTSFILE
253         echo "# Sorry for the clumsy syntax, but I have to have everything in one"      >> $OPTSFILE
254         echo "# line for every card. This is a MaGiC nUmBeR."                           >> $OPTSFILE
255         echo "# For the original file see in /KNOPPIX/etc/pcmcia/"                      >> $OPTSFILE
256         echo ""                                                                         >> $OPTSFILE
257         echo 'case "$ADDRESS" in'                                                       >> $OPTSFILE
258         writeline
259         echo "esac"                                                                     >> $OPTSFILE
260 else
261
262         mv  $OPTSFILE  $OPTSFILE.old
263         echo "# Wireless LAN adapter configuration file /etc/pcmcia/wireless.opts"       > $OPTSFILE
264         echo "# written by wlcardconfig (C) Eckhard Rüggeberg"                          >> $OPTSFILE
265         echo "# Sorry for the clumsy syntax, but I have to have everything in one"      >> $OPTSFILE
266         echo "# line for every card. This is a MaGiC nUmBeR."                           >> $OPTSFILE
267         echo "# For the original file see in /KNOPPIX/etc/pcmcia/"                      >> $OPTSFILE
268         echo ""                                                                         >> $OPTSFILE
269         echo 'case "$ADDRESS" in'                                                       >> $OPTSFILE
270         writeline
271         grep ";;" $OPTSFILE.old | grep -v $HWADDR 2>/dev/null                           >> $OPTSFILE
272         echo "esac"                                                                     >> $OPTSFILE
273 fi
Note: See TracBrowser for help on using the browser.