Thecus N5200Pro Webserver Modul automatisch starten

Tags: N5200 | NAS | Webserver Kommentieren

Das Webserver-Modul des Thecus N5200Pro mit der Firmware 2.00.16 enthält in der Version 1.0.4 einen Bug, der das Starten des Server verzögert und den Autostart verhindert. Um diesen Bug zu beheben einfach folgendermaßen vorgehen:

Zuerst einmal das SSH-Modul installieren (http://naswebsite.com/wiki/Thecus_N5200_Module:_SSHD) und mit dem Benutzer sys zum NAS connecten. Dort die Datei start_http.sh aus dem Ordner /raid/data/module/webserver/bin mit dem vi öffnen und den folgenden Code statt des vorhandenen einfügen:

#!/bin/sh
##########################################################################################
# Start apache server
##########################################################################################
check_user=grep "^User " /raid/data/naswebsite/conf/httpd.conf | awk '{print $2}'
check_user=${check_user:0:8}
logevent="/raid/data/module/webserver/bin/logevent/event"
ps_httpd=ps | grep /raid/data/module/webserver/httpd-2.0.54/bin/httpd
httpd_test=/raid/data/module/webserver/httpd-2.0.54/bin/apachectl configtest 2>&1
check_port=/raid/data/module/webserver/bin/check_port.sh
if [ "$httpd_test" != "Syntax OK" ];
then
echo "-5"
exit
elif [ "$check_port" != "0" ];
then
echo "$check_port"
elif [ "$ps_httpd" == "" ];
then
/raid/data/module/webserver/httpd-2.0.54/bin/apachectl startssl
wait_count=0
while [ $wait_count -lt 30 ]
do
wait_count=$[$wait_count+1]
ret=ps | grep /raid/data/module/webserver/httpd-2.0.54/bin/httpd | grep -v grep | grep $check_user | grep -v grep
if [ "${ret}" != "" ];then
echo "0"
$logevent 997 5001 info email
echo "a" > /raid/data/module/webserver/httpd-2.0.54/flag
exit
fi
sleep 1
done
$logevent 997 5003 error email
echo -6
http_pid=ps | grep /raid/data/module/webserver/httpd-2.0.54/bin/httpd | grep -v grep | grep root | grep -v grep | awk '{print $1}'
kill $http_pid
fi

Das Problem mit diesem Script ist das Folgende: Die While-Schleife wird nicht beendet, da der wait_count nicht hochgezählt wird. Hierfür die Zeile wait_count=$[$wait_count+1]. Weiterhin funktioniert das Script nicht, wenn ein anderer Webserver-Benutzername definiert wurde. Hierfür die folgende Zeile: check_user=grep "^User " /raid/data/naswebsite/conf/httpd.conf | awk '{print $2}'. Falls der Benutzername über 8 Zeichen hat, braucht man noch die Zeile darunter: check_user=${check_user:0:8}.

Nun sollte das Webserver-Modu bei einem manuellen Start über die Browseradministration schneller starten und nicht den eindruck erwecken, sich aufgehängt zu haben. Weiterhin wird der Server nun beim Boot mitgestartet und muss nicht ständig manuell gestartet werden.

TOP