Web Server на динамическом IP

Михаил Спектор, 18.06.2003

Многие из тех немногих, имеющих доступ к Internet, но не имеющих статического IP адреса, выделяемого провайдером, сталкивались с проблемой: как сделать общественный доступ к своему Web серверу. Каждый раз, когда вы выходите в Internet, вашему компьютеру назначается новый IP адрес, и нет никакой возможности донести его до общественности. Вашему вниманию предлагается простой выход из этой ситуации:

Регистрируемся где нибудь на бесплатном Web hosting'е, предоставляющем доступ по FTP к файлам странички. Таких в наше время немало, например: chat.ru, narod.ru, и т.д...

Пишем такой простенький скрипт:

#!/usr/bin/perl -w # путь к Perl должен соответствовать установленному на системе.

use Net::FTP;
use strict;

my $HOST = 'ftp.chat.ru'; # здесь FTP адрес бесплатного хостинга (БХ)
my $USER = 'user123'; # имя пользователя на БХ
my $PASS = 'qwerty'; # пароль на БХ
my $INTERFACE = 'ppp0'; # имя интерфейса через который вы подсоединяетесь к интернету
# (обычно это: ppp0)

if(@ARGV != 1 || $ARGV[0] ne "start" || $ARGV[0] ne "stop") {
die("USAGE: $0 [stop|start] ");
}

my $IP = `/sbin/ifconfig $INTERFACE | grep inet` # обратите внимание на обратные кавычкм

if($IP =~ /^[^d]+(d+).(d+).(d+).(d+)/) {
$IP = "$1.$2.$3.$4";
open(IP_FILE, ">/tmp/index.html") or die($!);
if($ARGV[0] eq "start") {
print IP_FILE


EOF1
}
else { # if($ARGV[0] eq "stop")
print IP_FILE

Hi, currently this host is down. Please retry later.


EOF2
}
close(IP_FILE) or die($!);

my $ftp = Net::FTP->new($HOST, Debug => 0) or die($!);
$ftp->login($USER, $PASS) or die($!);
$ftp->put("/tmp/index.html", "public_html/index.html"); # второй аргумент - путь к index.html
# на сервере
$ftp->quit();
unlink("/tmp/index.html");
}

Perl, а также модуль Net::FTP должны присутствовать на системе. Установить Net::FTP можно с помощью:

# perl -MCPAN -e shell
...
cpan> install Net::FTP

Кладем этот скрипт в /etc/init.d/sendip, делаем:
chmod 700 /etc/init.d/sendip
ln -s /etc/rc5.d/S98sendip /etc/init.d/sendip

Это - настройки для Linux, а для FreeBSD каталогом для загрузочных скриптов обычно является:
/usr/local/etc/rc.d

Обратите внимание: PPP соединение к моменту запуска этого скрипта должно быть уже установлено. Это, надеюсь, не проблема для имеющих ADSL ...

Что происходит, когда мы включаем компьютер:

Открывается PPP соединение .... [OK]
Вызывается наш скрипт, с параметром "start". Файл index.html, с содержанием настроек переадресации на ваш IP, будет отослан на сервер. И тогда при обращении к http://user123.chat.ru вы будете перенаправлены на Web сервер вашего компютера.

Что происходит при выключении компьютера:

Вызывается наш скрипт, с параметром "stop". Тогда, на сервер отсылается index.html, содержащий уведомление о том, что ваш компьютер временно недоступен.

Вот и все, а если немного доработать, можно сделать redirect и на FTP.





Источник - LinuxBegin.ru
http://linuxbegin.ru

Адрес этой статьи:
http://linuxshop.ru/linuxbegin/article372.html