Многие из тех немногих, имеющих доступ к 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.