Поскольку проблему надо было решить оперативно, изобрел собственный велосипед.
Написал perl-скрипт следующего содержания:
Code:
#! /opt/bin/perl -w
use LWP::UserAgent;
# login, password and my domain name for Zoneedit account
my $login = "mylogin";
my $pass = "mypassword";
my $zone = "mydomain.ru";
#logfile full path
my $logfile = "/opt/home/zonedit/log.txt";
#Routine that writes a message into logfile
sub PrintToLog;
#Main execution body
my $ua = new LWP::UserAgent;
$ua->credentials('dynamic.zoneedit.com:80', 'DNS Access', $login, $pass);
$request = new HTTP::Request('GET', "http://dynamic.zoneedit.com/auth/dynamic.html?zones=$zone");
$response = $ua->request($request);
if( $response->is_success )
{
PrintToLog( "DDNS updated: ", $response->code, "-", $response->message );
}
else
{
PrintToLog( "ERROR: ", $response->code, "-", $response->message );
}
#Implementation of routine that writes a message into logfile
sub PrintToLog()
{
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
my $DateStr = sprintf('%02s',$mday).".".sprintf('%02s',$mon+1).".".sprintf('%04s',$year+1900);
my $TimeStr = sprintf('%02s',$hour).":".sprintf('%02s',$min).":".sprintf('%02s',$sec);
if( open(my $f, ">>$logfile") )
{
print $f "(", $DateStr," ",$TimeStr, ") ", @_, "\n";
close( $f );
}
else
{
warn "Could not open logfile $logfile !!!\n";
print "(", $DateStr," ",$TimeStr, ") ", @_, "\n";
}
}
Прописал запуск этого скрипта в post-firewall и post-mount. Первый - на случай перезапуска pppd, второй - на случай перезагрузки роутера, т.к. скрипт и сам Perl лежат на флешке.
Правда столкнулся с проблемой при установке Perl-пакета HTML-Parser, который использует C-шную библиотеку. Для сборки библиотеки нужен полноценный gcc и линкер.
Более того, Makefile, который создает установщик Perl-пакетов, получается в итоге корявым. Эту корявость пришлось устранять ручками. Кому интересно, спрашивайте - напишу подробнее.