IP-Aktualisierung im HTML-Dokument, ein FLi4L-HowTo

Hat man Interesse daran, seinen eigenen Rechner im Internet zu finden, oder möchte man gar kleine Serverdienste anbieten, welche auch für andere erreichbar sein sollen, steht man vor dem Problem, wie man denn die bei der Einwahl erhaltene IP publiziert. Neben den bekannten Anbietern wie sie unter der Adresse http://www.portfolio16.de/dyndns/ gelistet sind, gibt es eine interessante Alterntive: Unmittelbar nach der Einwahl wird die zugewiesene IP ausgelesen, in eine html-Vorlage eingefügt (an einer vorher definierten Stellen) und dann per ftp auf einen beliebigen Server hochgeladen. Ab diesem Zeitpunkt ist für jeden, der die Adresse dieses Servers kennt, die aktuelle IP des eingewählten Rechners findbar. Ob es in Form einer direkten Weiterleitung innerhalb einer umfangreichen Homepage ist, oder einfach nur die IP gepostet werden soll (Internet Telefonie, Netmeeting - ohne Anmeldung an einem Verzeichnisserver usw.), das hängt dann von der Gestaltung der html-Vorlage ab.

 

Arbeitschritte:

1. Das ganze IP-Aktualisierung im HTML-Dokument-Paket downloaden (nur 34KB, es enthält auch das HowTo zum Offlinelesen).

2. Das Archiv entpacken und die Datei "ftp" in das Verzeichnis "\opt\usr\bin" kopieren.

3. In der Datei "opt.txt" ist die rot markierte Zeile an der richtigen Stelle hinzuzufügen:

gen       log            usr/local/bin/log
gen       version      etc/version
gen       ftp             usr/bin/ftp

4. In der config.txt ist OPT_TOOLS='yes' und OPT_PORTFW='yes' zu setzen.

5. Nun muß noch die gewünschte html-Vorlage als "vorlage.txt" in das Verzeichnis "\opt\usr\local\mybin" kopiert werden. Eine einfache Vorlage ist im heruntergeladenen Paket zu finden. Bei eigenen Vorlagen ist darauf zu achten, dass dort eindeutige Variablen definiert werden müssen, wo später die IP eingesetzt werden soll - Zeichen, die im übrigen html-Quellcode dann nicht anderweitig verwendet werden dürfen, günstig erscheint mir z.B. §. In meiner Vorlage wird die IP gepostet und nach 10 Sekunden automatisch an diese Adresse weitergeleitet. Ist unter dieser Adresse ein HTTP-Server erreichbar, erscheint dann seine Startseite.

6. Zuletzt ist die portfw.sh den eigenen Bedürfnissen anzupassen (eine koplette Beispiel-portfw.sh, d.h mit einem HTTP-Forwarding Eintrag an einen Server im lokalen Netz, befindet sich im Paket). Die rot markierten Zeilen müssen ergänzt (bei der eigenen portfw.sh, nicht bei dem Beispiel im Paket) und in jedem Fall angepasst werden:

if [ "$state" = "down" ] # state is down: exit here
then
exit 0
fi

/usr/sbin/ipmasqadm autofw -A -v -r tcp 80 80 -h $client1     #ist eine Möglichkeit http weiterzuleiten!

# Im folgenden Abschnitt gilt es zu definieren:
# www.ww = Server auf den upgeloaded werden soll
# uuu = Username
# ppp = Password
# § = Die Variable, die in der Vorlage durch die IP ersetzt werden soll
# vorlage.txt = Die im html-Code verfasste Vorlage
# cd verz = "verz" ist das Verzeichnis auf dem FTP-Server
# dynip.html = So heisst das Dokument dann auf dem Server


echo "machine www.ww login uuu password ppp" > /.netrc
chmod 600 /.netrc
sed 's/§/'$ip'/g' /usr/local/bin/vorlage.txt > /tmp/datei.txt
(echo "cd verz"; echo "send /tmp/datei.txt dynip.htm"; echo "bye" ) |
ftp www.ww
rm /tmp/datei.txt

echo 'done'
exit 0

7. Diskette erstellen und bei der nächsten Einwahl Daumen drücken.

8. Weitere Tips und Vorteile:

- Mit Imonc und einem FTP-Client können die wichtigen Dateien wie die vorlage.txt und die portfw.sh während des laufenden Betriebs angpaßt werden, die Änderungen werden schon bei der nächsten Einwahl wirksam.

- Bei dieser Methode muß man sich nirgends anmelden und noch viel wichtiger: Praktisch sofort nach der Einwahl steht die aktuelle IP im Netz - überall dort wo man sie haben will.

- Sollte es Probleme mit der Aktualisierung geben, wird z.B. das "§" in der Volage nicht ordnungsgemaess durch die IP ersetzt, empfiehlt es sich das "§" versuchsweise durch eine Zeichenfolge (z.B.: "_ip_" ) zu ersetzen.

 

Viel Erfolg und Vergnügen beim Spielen!

 

12. Mai 2002 von Carl Kossack