Bug?: wol-Daemon-Status "stopped" obwohl gestartet

Jengo

Neuer User
Mitglied seit
9 Nov 2006
Beiträge
32
Punkte für Reaktionen
0
Punkte
0
Hi,

ich habe gestern meine FRITZ!Box Fon WLAN 7170 (UI) mit der aktuellen Revision 3265 der Branch freetz-1.1-stable geupdatet. Installiert habe ich auch das WOL-CGI-Patch.

Nun sagt mir Freetz unter "Dienste" "wol stopped", obwohl der Daemon läuft und sich das WOL-WebIf aufrufen lässt und auch funktioniert.
Auch auf der Konsole sagt "/mod/etc/init.d/rc.wol status" "stopped" (Das ist ja der Verantwortliche für die Statusmeldung unter "Dienste".)

Es wäre nur ein kleiner Schönheitsfehler, der kleine Nachteile mit sich bringt: der Daemon lässt sich aus dem WebIf nicht neustarten oder beenden.

Kann sich jemand mal dazu äußern?

mfg
Jengo
 
Kannst du mal bitte mit telnet/ssh auf der Box nach dem Output von ps schauen?

MfG Oliver
 
Code:
/var/mod/root # ps                            
  PID USER       VSZ STAT COMMAND             
    1 root      1176 S    init                
    2 root         0 SWN  [ksoftirqd/0]       
    3 root         0 SW<  [events/0]          
    4 root         0 SW<  [khelper]           
    5 root         0 SW<  [kthread]           
    6 root         0 SW<  [kblockd/0]         
   23 root         0 SW<  [pdflush]           
   24 root         0 SW<  [pdflush]           
   26 root         0 SW<  [aio/0]             
   25 root         0 SW   [kswapd0]           
   62 root         0 SW   [pm_info]           
   66 root         0 SW<  [CPMAC]             
   70 root         0 SW   [mtdblockd]         
   96 root         0 SW   [tffsd_mtd_0]       
  286 root         0 SWN  [jffs2_gcd_mtd6]    
  310 root         0 SW<  [capi_oslib]        
  311 root         0 SW<  [capi_oslib]        
  312 root         0 SW   [capitransp]        
  318 root         0 SW   [glob_codecs]       
  333 root         0 SW<  [khubd]
  407 root      7316 S N  /usr/bin/avm/ctlmgr
  437 root      7316 S N  /usr/bin/avm/ctlmgr
  438 root      7316 S N  /usr/bin/avm/ctlmgr
  439 root      7316 S N  /usr/bin/avm/ctlmgr
  455 root      2984 S    dsld -i -n
  468 root      5432 S    telefon a127.0.0.1
  472 root      4584 S <  voipd
  475 root      2184 S    pbd
  476 root      2184 S    pbd
  482 root      5432 S    telefon a127.0.0.1
  483 root      5432 S    telefon a127.0.0.1
  484 root      5432 S    telefon a127.0.0.1
  485 root      2184 S    pbd
  486 root      2184 S    pbd
  492 root       656 S    /bin/run_clock -c /dev/tffs -d
  538 root      1172 S    httpd -P /var/run/webcfg.pid -p 81 -c /mod/etc/httpd.conf -h /usr/mww/ -r Freetz
  557 root      1164 S    dropbear -p #
  571 root      1176 S    init
  574 root      2196 S    usermand
  628 root         0 RWN  [kdsld_token]
  816 root      2792 S    igdd
  826 root      2792 S    igdd
  827 root      2792 S    igdd
  828 root      2792 S    igdd
  829 root      5432 S    telefon a127.0.0.1
  830 root      5432 S    telefon a127.0.0.1
  831 root      5432 S    telefon a127.0.0.1
 1387 root      2340 S    multid
 2170 root      1172 S    httpd -P /var/run/webcfg-wol.pid -p 82 -c /mod/etc/httpd-wol.conf -h /mod/pkg/wol/usr/mww-wol/ -r Wake
 2876 root      1220 S    dropbear -p #
 2877 root      1188 S    -sh
 2911 root      1168 R    ps

Die PID des httpd ist nur so hoch, weil ich zum Testen den Daemon schon mal gekillt und dann neugestartet habe.

mfg
Jengo
 
Kannst du mal bitte den Output von folgendem Befehl posten?
"sh -x /mod/etc/init.d/rc.wol status"

MfG Oliver
 
Code:
/var/mod/root # sh -x /mod/etc/init.d/rc.wol status
+ . /etc/init.d/modlibrc
+ export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin
+ export LD_LIBRARY_PATH=/mod/lib:/mod/usr/lib
+ [ -n  ]
+ DAEMON=httpd-wol
+ PIDFILE=/var/run/webcfg-wol.pid
+ [ ! -r /mod/etc/conf/wol.cfg ]
+ . /mod/etc/conf/wol.cfg
+ export WOL_ENABLED=yes
+ export WOL_PLAIN_PASSWD=
+ export WOL_PORT=82
+ export WOL_USER=
+ [ yes = inetd ]
+ modlib_status /var/run/webcfg-wol.pid
+ modlib_check_running
+ local fn=/var/run/httpd-wol.pid
+ [ ! -s /var/run/httpd-wol.pid ]
+ return 1
+ echo stopped
stopped
+ return 3
+ exit 0
 
Oh, der sucht da nach der falschen PID-Datei. Wahrscheinlich holt er sich den Namen aus der Daemon-Variable. Da muss ich erstmal schauen, wie weit die modlibrc aus 1.1 ist. Da sind im Trunk ja vor kurzem einige Änderungen gemacht worden.

MfG Oliver
 
Kann es sein, dass du selbst was in der modlibrc geändert hast? Welche Version von Freetz verwendest du? Da passt was nicht zusammen.

MfG Oliver
 
Nee, die modlibrc habe ich nicht verändert. Ich hatte freetz-stable-1.1 Rev. 3265.

Kann es was damit zu tun haben, dass ich "intltool" nicht installiert hatte? Make hat immer eine Warnung ausgespuckt, aber die habe ich ignoriert. Ich werde heute mal neu builden und dann noch mal schauen.

mfg Jengo
 
Nein, das kann nicht sein. Aber deine modlibrc sieht aus wie die Version aus 1.0.x.

MfG Oliver
 
Meine modlibrc sieht so aus:
Code:
# Shell functions for the scripts in /etc/init.d

# If $DAEMON is defined before including this file, some additional preparations is performed
# other environment variables:
# DAEMON_LONG_NAME	service name to display in start/stop message, default $DAEMON
# PID_FILE		pid-file for DAEMON, default /var/run/$DAEMON.pid


export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin
export LD_LIBRARY_PATH=/mod/lib:/mod/usr/lib


# modlib_addgroup:
#   check for group name, create group if not found.
#   No check is done for a change in the optional arguments!
#	$1: group name
#	$2-n: optional arguments for addgroup
modlib_addgroup()
{
	local group="$1"
	shift
	echo -n "Looking for group '$group' ... "
	if grep -q "^$group:" /etc/group; then
		echo "found"
	elif addgroup "$@" $group; then
		echo -n "created - now saving to data buffer ... "
		modusers save && echo "done" || echo "failed"
	else
		echo "not created - error occurred"
	fi
}

# modlib_adduser:
#   check for user name, create user if not found.
#   No check is done for a change in the optional arguments!
#	$1: user name
#	$2-n: optional arguments for adduser
modlib_adduser()
{
	local user="$1"
	shift
	echo -n "Looking for user '$user' ... "
	if grep -q "^$user:" /etc/passwd; then
		echo "found"
		return 0
	fi
	local msg=$(adduser "$@" $user 2>&1)
	if [ "$?" = 0 ]; then
		echo -n "created - now saving to data buffer ... "
		modusers save && echo "done" || echo "failed"
	else
		echo "not created - error occurred: $msg"
		exit 1
	fi
}

# modlib_check_running
#   check whether daemon is running. return status
modlib_check_running()
{
	local fn=${PID_FILE-/var/run/$DAEMON.pid}
	[ ! -s "$fn" ] && return 1
	kill -0 $(cat "$fn") 2> /dev/null
	local status="$?"
	[ "$status" != "0" ] && rm -f "$fn"
	return "$status"
}

# modlib_stop
#   stop daemon
modlib_stop()
{
	local fn=${PID_FILE-/var/run/$DAEMON.pid}
	echo -n "Stopping ${DAEMON_LONG_NAME-$DAEMON}..."
	if ! modlib_check_running; then
		echo 'not running.'
		return 0
	fi
	kill $(cat "$fn") 2> /dev/null
	local status=$?
	rm -f "$fn"
	if [ "$status" -eq 0 ]; then
		echo 'done.'
		return 0
	else
		echo 'failed.'
		return 1
	fi
}

# modlib_reload
#   reload daemon (send signal SIGHUP)
modlib_reload()
{
	local fn=${PID_FILE-/var/run/$DAEMON.pid}
	echo -n "Reloading ${DAEMON_LONG_NAME-$DAEMON}..."
	if ! modlib_check_running; then
		echo 'not running.'
		return 0
	fi
	kill -HUP $(cat "$fn") 2> /dev/null
	local status=$?
	if [ "$status" -eq 0 ]; then
		echo 'done.'
		return 0
	else
		rm -f "$fn"
		echo 'failed.'
		return 1
	fi
}

# modlib_restart
#   restart daemon
#   function "start" must be defined in the calling script
modlib_restart()
{
	modlib_stop
	sleep 1
	start
}

# modlib_status
#   check whether daemon is running
modlib_status()
{
	if modlib_check_running; then
		echo 'running'
		return 0
	else
		echo 'stopped'
		return 3
	fi
}

# load config
[ -n "$DAEMON" ] && case "$1" in
	""|config|load|reload|restart|start|status)
		if [ ! -r "/mod/etc/conf/$DAEMON.cfg" ]; then
			echo "Error[$DAEMON]: not configured" 1>&2
			exit 1
		fi

		. /mod/etc/conf/$DAEMON.cfg
		;;
esac

Auch ein diff mit der Version aus dem Repository /branches/freetz-stable-1.1/root/etc/init.d/modlibrc zeigt keine Unterschiede...

mfg
Jengo
 
Kann es sein, dass deine rc.wol unter packages/wol-cgi nicht die aus 1.1 ist?
Code:
	status)
		if [ "$WOL_ENABLED" = "inetd" ]; then
			echo 'inetd'
		else
			modlib_status
		fi
		;;
Da steht nix von PIDFILE hinter modlib_status.

MfG Oliver
 
Du hast Recht:

Code:
status)
                if [ "$WOL_ENABLED" = "inetd" ]; then
                        echo 'inetd'
                else
                        modlib_status "$PIDFILE"
                fi
                ;;

Warum ist das dann noch ne alte?
Hätte ich mal n "make dirclean" machen sollen, um mich von alten Versionen zu befreien?

Ich habe immer nur das svn geupdatet und die Optionen unter menuconfig noch mal überprüft und dann gebuildet.

Ich dachte alte Pakete würden dann automatisch aktualsiert...

mfg
Jengo
 
Nein, werden sie nicht zwangsläufig. Somit ist ein dirclean wohl doch was sinniges bei dir. Aber achte aktuell darauf, dass Pakete mit Suboptions nicht sauber gebaut werden, und eines workaround bedürfen (make $package-dirclean && make $package-precompiled für jedes dieser Pakete)
 
Er hatte am Anfang des Threads geschrieben, dass er stable-1.1 nutzt. Da gibts das Problem nicht.

MfG Oliver
 
Nach dem "make dirclean" hat alles wunderbar funktioniert.

Danke!

(Das einzige, was jetzt noch nicht geht ist die ENUM-Abfrage, obwohl im WebIf der Haken gesetzt ist, aber da schau ich noch mal n bisschen...)

mfg
Jengo
 

Neueste Beiträge

Statistik des Forums

Themen
246,274
Beiträge
2,249,295
Mitglieder
373,863
Neuestes Mitglied
RuthBeatty
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.