L i n u x - S c h u l e
|
|
Homepage | Server | Linux-Clients | Win9x-Clients | WinNT-Clients | Win3.11-Clients | Dos-Clients | Utilities |
Dynamische IP Adresse per ftp hochladen
Um die jeweils aktuelle IP Adresse des Servers auf eine Seite beim Provider hochzuladen, benötigt man:
- einen Provider, bei dem die html Seiten per ftp hochgeladen werden können
- eine Parameter-Datei für ftp /root/.netrc
- ein Shell Script, das die nötigen Befehle ausführt, /root/bin/ipput
- einen Aufruf dieses Scriptes aus /etc/ppp/ip-up.local
Der Provider
Das folgende Beispiel geht davon aus, dass die Seite des Heinz-Erhard-Gymnasiums bei Winshuttle liegt und unter http://www.k.shuttle.de/k/heg zu erreichen ist.
Die Benutzerkennung bei Winshuttle lautet he1234,
das Passwort ist "geheim".
Es gibt ein Unterverzeichnis des Stammverzeichnisses, das ipput heißt,
das Verzeichnis mit den Dateien für den Webserver heiß www, es ist nach einem Login mit cd www zu erreichen.Die Datei .netrc
Die Datei .netrc muß im Homeverzeichnis des Anwenders liegen, der das ftp Kommando aufruft. Im vorliegenden Fall wird das Script aber nicht von einem realen User sondern vom ipppd, also einem Daemon, kurz nach dem Verbindungsaufbau aufgerufen. Es wird aber durch das Setzen der Umgebungsvariablen HOME dafür gesorgt, dass die Datei dennoch gefunden wird.
# /root/.netrc #Paramterdatei fuer automatisches ftp machine www.k.shuttle.de login he1234 password geheim macdef init cd www/ipput lcd /tmp put index.html quit
Die Datei muß dem entsprechenden Anwender gehören und darf von keinem anderen Anwender lesbar sein, in unserem Fall also:
Arktur:~ # chmod 600 .netrc Arktur:~ # ls -l .netrc -rw------- 1 root root 132 Nov 5 18:49 .netrcACHTUNG: Diese Datei wird bei jder Ausführung des ftp-Kommandos ausgewertet, jedoch nur dann ausgeführt, wenn der Systemname hinter dem ftp mit dem Systemnamen in der .netrc übereinstimmt. Der entsprechende Anwender (in unserem Fall root) kann dann dieses System nicht mehr ¨per Hand¨ erreichen.
Das Shell Script /root/bin/ipput
Ich sammle alle von mir selbst ergänzten Scripte für die Systemverwaltung in /root/bin, dann weiß ich immer, welche Scripte von mir sind. Sollte diese Verzeichnis noch nicht existieren, muß es entweder angelegt oder die Scripte entsprechend geändert werden.
Das Shell Script /root/bin/ipput macht die eigentliche Arbeit, nämlich aus dem ifconfig Befehl die entsprechende IP Adresse zu extrahieren, und sie in eine einfache html-Seite einzubauen, die dann zum Provider geschickt wird.
#!/bin/sh
Das Script dazu sieht so aus:
#
# laedt die aktuelle IP Adresse auf die Homepage beim Provider
#
MYIP=foobar
# DIE FOLGENDEN ZEILEN UNBEDINGT AN DIE LOKALEN GEGEBENHEITEN ANPASSEN!
# DAS KANN LEIDER NICHT AUTOMATISCH ERFOLGEN############### BEGINN DES ANPASSUNGSBEREICHES ###############
# OHNE Einwahl diese Zeile:
#MYIP=`/sbin/ifconfig ippp0 | grep P-t-P | cut -d: -f2 | cut -d" " -f1`
#
# MIT Einwahl diese Zeile
#MYIP=`/sbin/ifconfig ippp1 | grep P-t-P | cut -d: -f2 | cut -d" " -f1`
#
#Hier die richtige ftp-Adresse des Providers eingeben
REMOTESYS=www.k.shuttle.de############### ENDE DES ANPASSUNGSBEREICHES ###############
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:~/bin
export HOME=/root
if [ -e /var/lock/adsl ] ; then
IP=`/sbin/ifconfig ppp0 | grep P-t-P | cut -d: -f2 | cut -d" " -f1`
else
IP=`/sbin/ifconfig ippp1 | grep P-t-P | cut -d: -f2 | cut -d" " -f1`
fi
DATUM=`/bin/date`
if [ "$MYIP" = "foobar" ] ; then
echo "Bitte bei einer der MYIP Zeilen das Kommentarzeichen entfernen!"
fi#
echo "<HTML>" > /tmp/index.html
echo "<HEAD>" >> /tmp/index.html
echo "<title>Aktuelle IP von Arktur</title>" >> /tmp/index.html
echo "</head>" >> /tmp/index.html
echo "<body>" >> /tmp/index.html
echo "<h1>Aktuelle IP von Arktur</h1>" >> /tmp/index.html
echo "<center><a href=\"http://$MYIP\">$MYIP</a></center>" >> /tmp/index.html
echo "</body>" >> /tmp/index.html
echo "</html>" >> /tmp/index.html# damit es sofort erscheint
sleep 3
# jetzt hochladen
/usr/bin/ftp $REMOTESYS
# Parameter sind in /root/.netrc definiert# Aufraeumen
rm -rf /tmp/index.html
exit 0
Das Script /root/bin/ipput sollte root.root gehören und die Rechte 700 haben.
Die Datei ip-up.local
Bei jedem erfolgreichen Verbindungsaufbau führt der Server die Befehle in der Datei /etc/ppp/ip-up aus, nachdem er eine IP Adresse erhalten hat. Diese Datei wird bei Arktur während der Systemeinrichtung erzeugt, so dass sich größere Änderungen verbieten.
Die /etc/ppp/ip-up.local sieht dann so aus:
Statt dessen legt man eine Datei /etc/ppp/ip-up.local an, die dann von ip-up aus aufgerufen wird:
Den Aufruf /etc/ppp/ip-up.local schreibt man ans Ende jedes Provider Cases. Hier ist ein Beispiel für ip-up.
Anstelle der Änderungen mit der Hand kann man natürlich auch direkt das Script ändern, das die Datei /etc/ppp/ip-up erzeugt, nämlich /usr/lib/ods-server/bin/PPP-config. Das ist aber ein recht heiße Sache, deshalb möchte ich hierzu keine Anleitung geben.#!/bin/bash /root/bin/ipput
Nach oben
© Thomas Litsch, zuletzt aktualisiert 10.11.2000, Email: thomas.litsch@linux-schule.de