if Abfrage in Script geht nicht wenn durch powersaved ausgeführt.
moin , ich hab in /etc/sysconfig/powersave/events die Variable POWERSAVE_EVENT_OTHER auf hotkeys gesetzt, ein Script namens hotkeys in /usr/lib/powersave/scripts erzeugt, wo ein anderesScript "hotkey_wlan" aufgerufen wird. .............hotkeys.......... #!/bin/bash read DUMMY USER DISPLAY DUMMY < <(/usr/bin/wttyhx -v) DISPLAY=":0" INFO="/opt/kde3/bin/kdialog --msgbox" run_as_user () { su - $USER -c "source ~/.bashrc; export DISPLAY=$DISPLAY; $1 &" } show_info () { run_as_user "$INFO '$1'" } HOTK=`echo $3 | awk '{ print $3; }'` logger "key:$HOTK" case "$HOTK" in 0000001*) /usr/local/sbin/brn up ;; 0000002*) /usr/local/sbin/brn down ;; 00000030) /usr/bin/amixer set Master 10%+ ;; 00000031) /usr/bin/amixer set Master 10%- ;; 00000032) /usr/bin/amixer set Master toggle ;; 00000071) /usr/bin/amixer set Surround unmute ;; 00000072) /usr/bin/amixer set Surround mute ;; 00000040) run_as_user "/usr/bin/xmms -r" ;; 00000041) run_as_user "/usr/bin/xmms -f" ;; 00000043) run_as_user "/usr/bin/xmms -s" ;; 00000045) run_as_user "/usr/bin/xmms -t" ;; 0000004c) eject /cdrom ;; 00000050) run_as_user "/opt/kde3/bin/kmail" ;; 00000051) run_as_user "/opt/kde3/bin/konqueror http://xtops.de" ;; 00000053) #show_info "Suspend to DISK..."; /usr/sbin/hibernate ;; 0000005c) /usr/sbin/hotkey_wlan ;; 00000061) echo "1" > /proc/acpi/asus/disp ;; 00000062) echo "2" > /proc/acpi/asus/disp ;; 00000063) echo "3" > /proc/acpi/asus/disp ;; 00000052) /usr/sbin/hotkey_wlan_off ;; 0000006b) show_info "Suspend to RAM..."; /usr/local/sbin/suspendtoram ;; *) /bin/logger "$HOTK is not defined" esac exit 0 ..............ende hotkeys.............. .............hotkey_wlan................ #!/bin/bash ASUS_WLED=/proc/acpi/asus/wled DEV_WLAN=eth1 MODS_WLAN="ipw2100 ieee80211_crypt_wep ieee80211 ieee80211_crypt" ISUP="unbelegt" /sbin/ifconfig | /bin/grep $DEV_WLAN 2>&1 >/dev/null STAT="$?" logger "STAT=$STAT" #if ["$STAT"=="1"]; then /sbin/ifconfig | /bin/grep $DEV_WLAN 2>&1 >/dev/null if [ "$?" == "1" ]; then # is down ISUP="down" logger "isup=$ISUP" logger "MODS_WLAN=$MODS_WLAN" /sbin/modprobe $MODS_WLAN sleep 1 /sbin/ifup $DEV_WLAN if [ "$?" == 0 -a -r $ASUS_WLED ]; then echo -n 1 > $ASUS_WLED fi else # is up ISUP="up" logger "isup=$ISUP" /sbin/ifdown $DEV_WLAN sleep 1 /sbin/rmmod --wait $MODS_WLAN if [ "$?" == 0 -a -r $ASUS_WLED ]; then echo -n 0 > $ASUS_WLED fi fi exit 0 .................Ende hotkey_wlan............. Die scripts habe ich von S.Henschel und für meinen ASUS M2400N bearbeitet. Ich hab die acpi-Sondertasten jetzt weitgehend in Funktion. ein Problem bleibt zur Zeit noch: führe ich das hotkey_wlan skript als root in einem xterm aus, funktioniert alles hervorragend. Wlan wird alternierend an und ausgeschaltet. Lasse ich das script durch den powersaved ausführen, lande ich immer in der gleichen if-bedingung in hotkey_wlan. Das bedeutet, das ich das wlan zwar anstellen kann, aber nicht mehr abstellen (nicht über die gleiche Taste) Das ist ein Verhalten, das ich nicht verstehe. Wo liegt der Unterschied ? in der Umgebung ? Wie kann ich das Problem beseitigen ? Vielen Dank im Voraus für Eure Bemühungen Dietrich Restemeyer p.s. hier gehts um SuSE 9.2 P.S. die Dateien hotkeys und hotkey_wlan hab ich angefügt
Hallo Dietrich, On Sun, Jan 09, 2005 at 09:46:16AM +0100, Dietrich Restemeyer wrote:
führe ich das hotkey_wlan skript als root in einem xterm aus, funktioniert alles hervorragend. Wlan wird alternierend an und ausgeschaltet. Lasse ich das script durch den powersaved ausführen, lande ich immer in der gleichen if-bedingung in hotkey_wlan. Das bedeutet, das ich das wlan zwar anstellen kann, aber nicht mehr abstellen (nicht über die gleiche Taste) Das ist ein Verhalten, das ich nicht verstehe.
In dem Script das du angehängt hast waren einige Fehler. Das Programm sollte so eigentlich nicht funktioniert haben. :)
Wo liegt der Unterschied ? in der Umgebung ? Wie kann ich das Problem beseitigen ?
Ja, die Umgebungsvariablen sind vom powersaved aus IMHO nicht gesetzt. Kann es außerdem sein, dass du von der Konsole aus ein anderes Script mit gleichem Namen aufgerufen hast (anderer Pfad) Ersetze dein Skript mal durch die korrigierte Version unten. Diese ist zwar nicht getestet (mangels Hardware/ifup/ifdown etc.) sollte aber funktionieren. which hotkey_wlan im xterm ausführen und sicherstellen, dass du das korrekte script ausführst. <hotkey_wlan> #!/bin/bash ASUS_WLED=/proc/acpi/asus/wled DEV_WLAN=eth1 MODS_WLAN="ipw2100 ieee80211_crypt_wep ieee80211 ieee80211_crypt" ## DEBUG # set -vx /sbin/ifconfig | /bin/grep $DEV_WLAN > /dev/null 2>&1 if test "$?" = "1" then # is down /usr/bin/logger "wlan going up" /sbin/modprobe $MODS_WLAN > /dev/null 2>&1 sleep 1 /sbin/ifup $DEV_WLAN > /dev/null 2>&1 if test "$?" = 0 then if test -e $ASUS_WLED then echo -n 1 > $ASUS_WLED /usr/bin/logger "Wlan up SUCCESS" else /usr/bin/logger "$ASUS_WLED not found" fi else /usr/bin/logger "ifup failed" fi else # is up /usr/bin/logger "wlan going down" /sbin/ifdown $DEV_WLAN > /dev/null 2>&1 sleep 1 /sbin/rmmod --wait $MODS_WLAN > /dev/null 2>&1 if test "$?" = 0 then if test -e $ASUS_WLED then echo -n 0 > $ASUS_WLED /usr/bin/logger "Wlan down SUCCESS" else /usr/bin/logger "$ASUS_WLED not found" fi else /usr/bin/logger "rmmod --wait $MODS_WLAN failed" fi fi exit 0 </hotkey_wlan> Sollte es nicht funktionieren bitte die Ausgabe in /var/log/messages mitschicken und das Script auf der Konsole evtl. mit den DEBUG Optionen set -xv starten. Greetings Daniel -- "Es findet keinerlei Zensur mehr statt nur wenn der Staat es dringend nötig hat und auch die Kunst und Wissenschaft sind Frei das Nähere bestimmt die Polizei." -- Erich Weinert
Am Sonntag, 9. Januar 2005 14:18 schrieb Daniel Lord:
Hallo Dietrich,
On Sun, Jan 09, 2005 at 09:46:16AM +0100, Dietrich Restemeyer wrote:
führe ich das hotkey_wlan skript als root in einem xterm aus, funktioniert alles hervorragend. Wlan wird alternierend an und ausgeschaltet. Lasse ich das script durch den powersaved ausführen, lande ich immer in der gleichen if-bedingung in hotkey_wlan. Das bedeutet, das ich das wlan zwar anstellen kann, aber nicht mehr abstellen (nicht über die gleiche Taste) Das ist ein Verhalten, das ich nicht verstehe.
In dem Script das du angehängt hast waren einige Fehler. Das Programm sollte so eigentlich nicht funktioniert haben. :) hat es aber, staun!
Wo liegt der Unterschied ? in der Umgebung ? Wie kann ich das Problem beseitigen ?
Ja, die Umgebungsvariablen sind vom powersaved aus IMHO nicht gesetzt. Kann es außerdem sein, dass du von der Konsole aus ein anderes Script mit gleichem Namen aufgerufen hast (anderer Pfad)
Ersetze dein Skript mal durch die korrigierte Version unten. Diese ist zwar nicht getestet (mangels Hardware/ifup/ifdown etc.) sollte aber funktionieren.
which hotkey_wlan im xterm ausführen und sicherstellen, dass du das korrekte script ausführst.
<hotkey_wlan> #!/bin/bash
ASUS_WLED=/proc/acpi/asus/wled DEV_WLAN=eth1 MODS_WLAN="ipw2100 ieee80211_crypt_wep ieee80211 ieee80211_crypt"
## DEBUG # set -vx
/sbin/ifconfig | /bin/grep $DEV_WLAN > /dev/null 2>&1
if test "$?" = "1" then # is down /usr/bin/logger "wlan going up" /sbin/modprobe $MODS_WLAN > /dev/null 2>&1 sleep 1 /sbin/ifup $DEV_WLAN > /dev/null 2>&1
if test "$?" = 0 then if test -e $ASUS_WLED then echo -n 1 > $ASUS_WLED /usr/bin/logger "Wlan up SUCCESS" else /usr/bin/logger "$ASUS_WLED not found" fi else /usr/bin/logger "ifup failed" fi else # is up /usr/bin/logger "wlan going down" /sbin/ifdown $DEV_WLAN > /dev/null 2>&1 sleep 1 /sbin/rmmod --wait $MODS_WLAN > /dev/null 2>&1
if test "$?" = 0 then if test -e $ASUS_WLED then echo -n 0 > $ASUS_WLED /usr/bin/logger "Wlan down SUCCESS" else /usr/bin/logger "$ASUS_WLED not found" fi else /usr/bin/logger "rmmod --wait $MODS_WLAN failed" fi fi
exit 0 </hotkey_wlan>
Sollte es nicht funktionieren bitte die Ausgabe in /var/log/messages mitschicken und das Script auf der Konsole evtl. mit den DEBUG Optionen set -xv starten.
Greetings Daniel -- "Es findet keinerlei Zensur mehr statt nur wenn der Staat es dringend nötig hat und auch die Kunst und Wissenschaft sind Frei das Nähere bestimmt die Polizei." -- Erich Weinert
Ich hab dein Script jetzt in /usr/local/sbin stehen- und alles funktioniert wie es soll Wo findet man denn am schnellsten Infos zu Bash-Scripts, so zu do, if while etc. mit ein paar griffigen Beispielen und Hinweisen auf Lieblingsfehler ; vergessen und so weiter ? man bash steht zwar fast alles, ist aber nicht wirklich übersichtlich. Vielen Dank für die Hilfe Dietrich
Hallo Dietrich, On Sun, Jan 09, 2005 at 05:05:51PM +0100, Dietrich Restemeyer wrote:
Wo findet man denn am schnellsten Infos zu Bash-Scripts, so zu do, if while etc. mit ein paar griffigen Beispielen und Hinweisen auf Lieblingsfehler ; vergessen und so weiter ? man bash steht zwar fast alles, ist aber nicht wirklich übersichtlich.
schnell ist man bash allemal. Etwas ausführlicher ist z.B. http://www.linuxfibel.de/bashprog.htm Wäre nett wenn du deine Antworten etwas kürzen würdest. Greetings Daniel -- experience is what causes a person to make new mistakes ... instead of old ones.
participants (2)
-
Daniel Lord
-
Dietrich.Restemeyer@t-online.de