|
|
Damit ich - oder jemand anders - jederzeit von draußen auf meinen
Rechner zugreifen kann, habe ich folgenden Mechanismus installiert:
- Man ruft unter einer - sonst nicht benutzten - Telefonnummer
meinen Rechner an.
- Der Rechner nimmt ab (vbox) und startet ein Programm, daß
für eine Viertelstunde eine Internetverbindung forciert.
- Beim Aufbau der Verbindung wird eine Webseite auf meiner Website
(mit Passwort geschützt) aktualisiert, so daß dort die aktuellen
Verbindungsdaten stehen.
- Zusätzlich werden die Verbindungsdaten (IP-Nummer) als
eMail an mein Postfach bei t-online geschickt. Dadurch
wird das Betreff dieser Mail automatisch an mein Handy geschickt,
so daß ich auch ohne Browser die IP-Nummer meines Rechners
erfahre.
Als erstes müssen die üblichen Eintragungen für vbox gemacht werden:
In der /etc/inittab
I6:23:respawn:/usr/sbin/vboxgetty -d /dev/ttyI6 |
In der /etc/vbox/vboxgetty.conf
port /dev/ttyI6
modeminit ATZ&B512&E<msn>
user <einBenutzer>
group <eineGruppe>
spooldir /var/spool/vbox/internet |
In das Verzeichnis /var/spool/vbox/internet kommen
dann folgende Dateien:
Die standard.tcl so, wie sie im vbox mitgeliefert wird.
Die vbox.conf
[CALLERIDS]
* UNKNOWN *** unbekannter Anrufer ***
[UNKNOWN]
* * dummy.msg 0 RINGS=1 SCRIPT=vbox_ip.tcl |
Das tcl-Programm (vbox_ip.tcl), das bei einem Anruf ausgeführt wird
exec /var/spool/vbox/internet/vbox_ip &
return |
Das Programm (vbox_ip), das vom tcl aufgerufen wird.
#! /bin/sh
ping -i 30 -c 30 suse.de &
sleep 30
IPNR=`ifconfig ippp0 | fgrep 'inet addr'`
echo "IP# requested at `date`
IP# is $IPNR" | mailx -s "$IPNR" user@irgendwo.de
/usr/sbin/sendmail -q &
exit 0 |
Dieses Programm macht die eigentliche Arbeit. Im Hintergrund dreißig
Mal alle 30 Sekunden - macht zusammen eine Viertelstunde - eine IP-Adresse
in Internet anpingen. Nach einer Wartezeit über ifconfig die
vom Provider vergebene IP-Adresse herausfinden und sie an eine Mailadresse
(user@irgendwo.de) verschicken. Der 'sendmail -q &' sorgt
nur dafür, daß die Mail sofort verschickt wird, und nicht erst nach einiger
Zeit.
Wer tcl beherscht, kann natürlich diese Funktionalität auch gleich in das
vbox_ip.tcl schreiben. Ich kann kein tcl und habe deshalb ein
Shell-Skript geschrieben.
Damit die vergebene IP-Adresse auch auf meiner Website sichtbar ist -
und zwar unabhängig davon, ob ich den Zugang ins Internet selber ausgelöst
habe oder ob der Rechner sich aus anderen Gründen eingewählt hat - kommt
in das Skript /etc/ppp/ip-up noch ein Eintrag an die Stelle, wo
sonst auch die anderen Aktionen beim Verbindungsaufbau stehen.
Bei mir sieht das in etwa so aus:
...
case $BASENAME in
ip-up)
...
case $INTERFACE in
ippp0)
... (hole Mail, News und anderes)
(sleep 30 ; /etc/httpd/newip.pl) &
...
;;
...
esac
....
esac
.... |
Das hier benutzte Programm /etc/httpd/newip.pl sieht so aus:
#!/usr/bin/perl
use POSIX qw(strftime);
use Text::Template qw(fill_in_file);
use Net::FTP;
$templname = "/etc/httpd/ipadresse.html";
$outname = "/usr/local/httpd/htdocs/web/privat/ipadresse.html";
$host = 'meineDomain.de';
$logname = 'meinAccount';
$passwd = 'meinPasswort';
$cwd = 'public_html/privat'; # der Ort beim Web-Hoster,
# wo die Datei hin soll
open (IN,"/sbin/ifconfig ippp0 | fgrep 'inet addr' |")
|| die "can't pipe from ifconfig: $!";
$zeile = <IN>;
close(IN);
($replace{ip}) = ($zeile =~ /inet addr:\s*([.0-9]+)/);
$replace{datum} = strftime("%d.%m.%Y",localtime);
$replace{zeit} = strftime("%H:%M",localtime);
open(OUT,"> $outname") || die "can't open $outname: $!";
print OUT fill_in_file($templname,HASH => \%replace);
close(OUT);
if ($ftp = Net::FTP->new($host)){
print "login: ",$ftp->login($logname,$passwd);
print "\ncwd: ",$ftp->cwd($cwd);
print "\nput: ",$ftp->put($outname);
print "\nquit: ",$ftp->quit();
print "\n";
} |
Dieses Perl-Programm liest sich die IP-Adresse aus ifconfig heraus
und ersetzt in einer Template-Datei Platzhalter für Datum, Uhrzeit und
IP-Adresse. die resultierende HTML-Datei wird in die lokale Kopie meiner
Webseiten gespeichert und per ftp an meinen Web-Hoster übertragen.
Meine Template-Datei sieht so aus:
<HTML>
<HEAD>
<TITLE>Zugriff auf vblinux</TITLE>
<META NAME="author" CONTENT="Volker Böhm">
<META NAME="generator" CONTENT="Ulli Meybohms HTML EDITOR">
<LINK REL="stylesheet" HREF="/vb.css" TYPE="text/css">
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#F0F0F0" >
<div align="center"><H1>Zugriff auf meinen Rechner zuhause</H1></div>
<P>Ich habe meinem Rechner zuhause beigebracht, immer wenn er ins
Internet geht, diese Seite zu aktualisieren, so daß man - zumindest
solange die Verbindung noch besteht - den Rechner auch von außen
erreichen kann.
</P>
<P>
Der Rechner hat sich das letzte Mal am
<TT><FONT size="+1" color="red">{$datum}</FONT></TT> um
<TT><FONT size="+1" color="red">{$zeit}</FONT></TT> unter der IP-Nummer
<TT><FONT size="+1" color="red">{$ip}</FONT></TT> eingewählt,
und könnte deshalb
</P>
<A HREF="http://{$ip}">hier</A>
<P>erreichbar sein.
</P>
<P>Sollte die Verbindung schon wieder beendet sein, könnt Ihr eine
Verbindung forcieren, indem Ihr unter der Telefonnummer
<FONT size="+1" color="green">041 41/xxx xx</FONT> anruft. Dort
wird abgehoben und sofort wieder aufgelegt und eine Minute später
sollte diese Seite aktualisiert sein.
</P>
<P>Und vergesst nicht:
<FONT size="+1" color="blue">Benehmt Euch anständig auf meinem Rechner!
</FONT>
</P>
</BODY>
</HTML> |
Oder nochmal zum ansehen.
|