- Mitglied seit
- 24 Dez 2009
- Beiträge
- 15
- Punkte für Reaktionen
- 0
- Punkte
- 0
hallo,
ich steh mal wieder vor einem kleinen Problem
Ausgangssituation:
- Wake On Call eingerichtet
- Shutdown Möglichkeit eingerichtet
- Webserver auf weiterem Lan-Rechner
Was nun folgen sollte:
- Falls die Seite des Lan-Rechners nicht erreichbar ist, weil dieser zum Beispiel offline ist oder der Webserver abgeschmiert ist, soll auf der F!B eine kleine Offline Seite per httpd bereitgestellt werden auf die meine dyndns Adresse geforwarded werden soll.
Skript:
- Dieses kleine Skript hilft beim Switch.
Problem:
- Der Switch funktioniert auch so weit schon.
- Allerdings nur LAN intern. Also jeweiliges Ansprechen der IPs bzw. Rechnernamen funktioniert, je nach dem welcher Server läuft (httpd auffer Box oder aufm LAN Rechner)
- Die Änderungen der Forwarding Regeln scheinen irgendwie nicht an meine Dyndns-Adresse gebunden zu werden.
Fragen:
- Reicht es aus die Forwarding Regeln in die ar7.cfg zu schreiben, oder muss diese Änderung noch gesondert für Dyndns bekannt gegeben/gebunden werden ?
- Eine Konfiguration mithilfe einer virtuellen IP auf der Box führten auch nicht zum Erfolg. Irgend welche Vorschläge, wieso Dyndns (auch nach einer längeren Zeitspanne) die Änderungen nicht mitkriegt ?
EDIT:
ok ich bin jetzt soweit, dass es scheint als würde die ar7.cfg nach neu schreiben nicht geladen/erwendet werden.
mittels
können die neuen einstellungen nachgeladen werden.
Allerdings werden hierbei alle Interfaces und Konfigurationsdateien neu geladen.
Gibt es hier eine Möglichkeit nur die ar7.cfg nachträglich nochmal zu laden, ohne die Interfaces neu zu initiieren ?
gtx
ich steh mal wieder vor einem kleinen Problem
Ausgangssituation:
- Wake On Call eingerichtet
- Shutdown Möglichkeit eingerichtet
- Webserver auf weiterem Lan-Rechner
Was nun folgen sollte:
- Falls die Seite des Lan-Rechners nicht erreichbar ist, weil dieser zum Beispiel offline ist oder der Webserver abgeschmiert ist, soll auf der F!B eine kleine Offline Seite per httpd bereitgestellt werden auf die meine dyndns Adresse geforwarded werden soll.
Skript:
- Dieses kleine Skript hilft beim Switch.
Code:
#!/bin/sh
# skript to set redirect to buri's websrv if it is online
WEBSRVSTAT=1 # 0-online, 1-offline
WEBSRVIP=""
websrvstat(){
local info=$(wget -s http://${WEBSRVHOST}/ 2>&1)
local idxavail=$(wget -q -s http://${WEBSRVHOST}/ > /dev/null 2>&1 /dev/null; echo $?)
local ip=$(echo ${info} | cut -d'(' -f2 | cut -d')' -f1)
if [ "${ip}" != "" -a "${idxavail}" == "0" ] ; then
WEBSRVSTAT=0
WEBSRVIP="${ip}"
else
WEBSRVSTAT=1
WEBSRVIP=""
fi
}
setupvirtwebsrv(){
local vip=$1
local port=$2
local iface=$3
local nmask=$4
local bcast=${vip%.*}".255"
echo "$vip - $port - $iface - $nmask - $bcast"
# rewrite ar7.cfg
[B]cp /var/flash/ar7.cfg /var/tmp/ar7.cfg
cat /var/tmp/ar7.cfg | sed 's/\"tcp\ 0\.0\.0\.0:80\ .*\ 0\ \#\ HTTP\ SRV\"/ \
\"tcp\ 0\.0\.0\.0:80\ '"${vip}"':'"${port}"'\ 0\ \#\ HTTP\ SRV\"/' \
> /var/tmp/ar7.cfg.new
cat /var/tmp/ar7.cfg.new > /var/flash/ar7.cfg
[/B]
# start httpd
#echo "httpd -P ${WEBSRVOFFPID} -p ${vip}":"${port} -h ${WEBSRVOFFHOME}"
#httpd -P ${WEBSRVOFFPID} -p ${vip}":"${port} -h ${WEBSRVOFFHOME}
[B]echo "httpd -P ${WEBSRVOFFPID} -p ${port} -h ${WEBSRVOFFHOME}"
httpd -P ${WEBSRVOFFPID} -p ${port} -h ${WEBSRVOFFHOME}
[/B]
# setup virtual interface
#echo "ifconfig ${iface} ${vip} netmask ${nmask} broadcast ${bcast} up"
#ifconfig ${iface} ${vip} netmask ${nmask} broadcast ${bcast} up
}
setuplanwebsrv(){
local ip=$1
local port=$2
local iface=$3
echo "$ip - $port - $iface"
# 1st write ar7.cfg
[B]cp /var/flash/ar7.cfg /var/tmp/ar7.cfg
cat /var/tmp/ar7.cfg | sed 's/\"tcp\ 0\.0\.0\.0:80\ .*\ 0\ \#\ HTTP\ SRV\"/ \
\"tcp\ 0\.0\.0\.0:80\ '"${ip}"':'"${port}"'\ 0\ \#\ HTTP\ SRV\"/' \
> /var/tmp/ar7.cfg.new
cat /var/tmp/ar7.cfg.new > /var/flash/ar7.cfg[/B]
# 2nd stop httpd
echo "kill $(cat ${WEBSRVOFFPID})"
kill $(cat ${WEBSRVOFFPID})
# 3rd stop virtual interface
#echo "ifconfig ${iface} down > /dev/null 2>&1 > /dev/null 2>&1"
#ifconfig ${iface} down > /dev/null 2>&1 > /dev/null 2>&1
}
PREVWEBSRVSTAT=1
WEBSRVHOST="buri"
WEBSRVOFFHOME="/var/tmp/.webhomes/offline/"
WEBSRVOFFPID="/var/tmp/.webhomes/websrv-off.pid"
watchwebsrv() {
while(true)
do
websrvstat
if [ "${WEBSRVSTAT}" == "0" -a "${PREVWEBSRVSTAT}" == "1" ] ; then
PREVWEBSRVSTAT=0
echo "'${WEBSRVHOST}' IS ONLINE. WEBSRV IS RUNNING @ ${WEBSRVIP}"
setuplanwebsrv "$(echo ${WEBSRVIP} | cut -d':' -f1)" \
"$(echo ${WEBSRVIP} | cut -d':' -f2)" \
"eth0:1"
fi
if [ "${WEBSRVSTAT}" == "1" -a "${PREVWEBSRVSTAT}" == "0" ] ; then
PREVWEBSRVSTAT=1
echo "'${WEBSRVHOST}' IS OFFLINE"
setupvirtwebsrv "192.168.237.1" "83" "eth0:1" "255.255.255.0"
fi
sleep 5
done
}
usage(){
echo "Usage: ./watchdog <SERVICE> , SERVICE={websrv}"
}
main(){
case "$1" in
"websrv" ) watchwebsrv ;;
* ) usage ;;
esac
}
main $1
Problem:
- Der Switch funktioniert auch so weit schon.
- Allerdings nur LAN intern. Also jeweiliges Ansprechen der IPs bzw. Rechnernamen funktioniert, je nach dem welcher Server läuft (httpd auffer Box oder aufm LAN Rechner)
- Die Änderungen der Forwarding Regeln scheinen irgendwie nicht an meine Dyndns-Adresse gebunden zu werden.
Fragen:
- Reicht es aus die Forwarding Regeln in die ar7.cfg zu schreiben, oder muss diese Änderung noch gesondert für Dyndns bekannt gegeben/gebunden werden ?
- Eine Konfiguration mithilfe einer virtuellen IP auf der Box führten auch nicht zum Erfolg. Irgend welche Vorschläge, wieso Dyndns (auch nach einer längeren Zeitspanne) die Änderungen nicht mitkriegt ?
EDIT:
ok ich bin jetzt soweit, dass es scheint als würde die ar7.cfg nach neu schreiben nicht geladen/erwendet werden.
mittels
Code:
$ ar7cfgchanged
$ exec /etc/init.d/rc.net reload
Allerdings werden hierbei alle Interfaces und Konfigurationsdateien neu geladen.
Gibt es hier eine Möglichkeit nur die ar7.cfg nachträglich nochmal zu laden, ohne die Interfaces neu zu initiieren ?
gtx
Zuletzt bearbeitet: