WDS manuell per Console aktivieren/deaktivieren

xsapling

Mitglied
Mitglied seit
30 Jan 2005
Beiträge
755
Punkte für Reaktionen
0
Punkte
0
ich würde WDS per telnet abschalten und dann wieder hinzuschalten. Weiß jemand, wie die passende Anweisung lautet?
 
Teil 1 - die Billiglösung (WDS an/aus)

Du schriebst mir in Deiner PM:
xsapling schrieb:
ich bin inzwischen fündig geworden. Und zwar gibt es in /var/flash/wlan.cfg einen Eintrag "wds_enabled 1".

Meine Frage ist jetzt, wie ich diesen Eintrag mit einem Rutsch per console jeweils auf 0 oder 1 setzen kann. Also ohne den umständlichen Weg über nvi.
Ja, das weiß ich auch, das ist auch nicht so schwierig. Aber ich habe etwas Besseres, Eleganteres vor, als in der Konfigurationsdatei herumzupfuschen. Mir schwebt eine Methode vor, mit der man auch andere AVM-Einstellungen bearbeiten kann. Mehr dazu morgen, hoffe ich.

Wie dem auch sei, was Du willst, geht so wie unten zu sehen. Einfach in eine Skriptdatei speichern und ausführbar machen. Die Datei kannst Du beim Start der Box aus debug.cfg heraus erzeugen oder vor dem Bauen der Firmware als in root/usr/bin/wds_switch unterbringen (auch ausführbar machen!).

Code:
#!/bin/sh

case "$1" in
	no|0|false|off)
		switch=no
		;;
	yes|1|true|on)
		switch=yes
		;;
	*)
		echo "Usage: $0 [no|yes|0|1|false|true|off|on]" 1>&2
		exit 1
		;;
esac
cat /var/flash/wlan.cfg | sed -r "s/(WDS_enabled = )(.*);/\1$switch;/" > /tmp/wlan.cfg
cat /tmp/wlan.cfg > /var/flash/wlan.cfg

Edit: Ob durch die reine Dateiänderung auch die laufenden Prozesse gleich mitbekommen, daß sich überhaupt was geändert hat und die Datei nachzuladen ist, bezweifle ich mal. Probier es selbst aus. Falls nicht, wirkt es sich erst nach einem Neustart der Box oder des entsprechenden Serverprozesses aus. Ich hoffe, meine neue Methode ist da besser (sie existiert ja nur in meinem Kopf).
 
die neue Methode ist nur von Relevanz(da das andere nicht hilft, trotzdem Dank :) ). Ich habe Dir übrigens was falsches gesagt. In der wlan.cfg heißt es übrigens nicht 1 oder 0 sondern yes oder no.

ich habe mir bezügl meines Problems ( http://www.ip-phone-forum.de/showthread.php?t=132345 )vorübergehend anderweitig geholfen. Allerdings hätte ich großes Interesse daran, die Möglichkeit zur Hand zu haben, die Du Eingangs angesprochen hattest.
 
Zuletzt bearbeitet:
Daß es yes/no heißt, ist mir schon aufgefallen, keine Angst. Das Skript arbeitet ja auch so, nur akzeptiert es statt yes (benutzerfreundlicherweise) auch 1, true oder on. Und funktionieren sollte es auch nach einen Neustart.

Was Du in dem anderen Thread als Lösung gesehen hast, weiß ich nicht. Da steht nur, wie man den WLAN-Teil der Netzwerkdienste neu startet. In Kombination mit meinem Skript könnte das allerdings was werden, indem Du die Zeile
Code:
/etc/init.d/rc.net wlanreload
anhängst. Wie ich ja schrieb, der Dienst muß neu gestartet werden. Daß das funktioniert, kannst Du checken, indem Du schaust, ob der Prozeß wstart läuft, indem Du seine PID (process id) checkst. Gibt es eine, läuft er (und damit WDS), gibt es keine, läuft er nicht:
Code:
pidof wstart
Ich habe das probiert, es klappt. Das ganze Skript also nochmal:

Code:
#!/bin/sh

case "$1" in
	no|0|false|off)
		switch=no
		;;
	yes|1|true|on)
		switch=yes
		;;
	*)
		echo "Usage: $0 [no|yes|0|1|false|true|off|on]" 1>&2
		exit 1
		;;
esac
cat /var/flash/wlan.cfg | sed -r "s/(WDS_enabled = )(.*);/\1$switch;/" > /tmp/wlan.cfg
cat /tmp/wlan.cfg > /var/flash/wlan.cfg
/etc/init.d/rc.net wlanreload
echo "PID von wstart = $(pidof wstart)"
 
jetzt müsste ich noch wissen, wie man aus der debug.cfg heraus ein lauffähiges Script erstellen kann ...
Weißt Du, wo ich da nachlesen könnte?
 
xsapling schrieb:
Weißt Du, wo ich da nachlesen könnte?

Ja, im Forum bzw. durch Anlesen von UNIX-Grundlagen, besonders Shell-Programmierung und ganz speziell Hier-Dokumente. :rolleyes:

Code:
cat << 'EOF' > /tmp/wds_switch
#!/bin/sh

case "$1" in
  no|0|false|off)
    switch=no
    ;;
  yes|1|true|on)
    switch=yes
    ;;
  *)
    echo "Usage: $0 [no|yes|0|1|false|true|off|on]" 1>&2
    exit 1
    ;;
esac
cat /var/flash/wlan.cfg | sed -r "s/(WDS_enabled = )(.*);/\1$switch;/" > /tmp/wlan.cfg
cat /tmp/wlan.cfg > /var/flash/wlan.cfg
/etc/init.d/rc.net wlanreload
echo "PID von wstart = $(pidof wstart)"
EOF

chmod +x /tmp/wds_switch

Wichtig sind die einfachen Anführungszeichen um das obere EOF herum. Das weiß kaum jemand, aber wenn sie nicht da sind, werden Parameter wie $1 in der Ausgabe von cat expandiert und man müßte dagegen angehen, indem man ihnen eine Escape-Sequenz ("\") voranstellt. Verwendet man die Anführungszeichen, ist das nicht nötig, alles wird wörtlich von cat ausgegeben. Das steht in dem angegebenen Skript zu den Hier-Dokumenten nicht drin.
 
Vielen Dank für Deine Hilfestellungen!!
Diese sind echt schön!
 
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.