Synchronizace casu jinak nez skrz NNTP (delsi)
John Popelnik
popelnik na gvid.cz
Středa Březen 18 17:58:23 CET 1998
Dobry podvecer,
mam nasledujici problem:
Cas od casu (behem dne) se mi rozejdou hodiny na mem serveru oproti
skutecnosti a tak jsem je chtel synchronizovat podle jineho serveru v
Internetu. Nechtelo se mi badat na moznostmi NNTP (rdate, ...) a tak jsem si
myslel, ze staci v cronu kazdou hodinu pustit skript, ktery se spoji s
nejakym serverem v Internetu pomoci 'telnet server.domena.cz daytime' a z
vystupu si odebere radek s aktualnim datem a casem, podle cehoz poupravi
svuj cas.
Skript jsem napsal v perlu a pri zkouseni mi bez problemu fungoval, jako
synchro-zdroj jsem si vybral k nam nejblizsi viper.anet.cz (nas nameserver)
a v cronu vse spoustel v *:22
Z cronu ovsem program funguje jen obcas (napr. nektere nocni hodiny), nekdy
vsak telnetem cas z proti-serveru nedostane. Pri rucnim zkouseni vsak cas
dostane vzdy. Vypada to, jako by nedochazelo k vraceni casoveho udaje pouze
tehdy, kdyz skript bezi z cronu. Skript prikladam na konec a byl bych rad,
kdyby mi nekdo poradil, co delam blbe.
Diky, John Popelnik
----------------------------------------------------
John Popelnik, system administrator of eniac.gvid.cz
office: FI MU Brno - B205 tel. (05) 41 512 348
e-mail: popelnik na gvid.cz privat (05) 46 211 083
-------------
-------------
#! /usr/bin/perl
open VIPER, '/bin/telnet viper.cis.vutbr.cz daytime 2>&1|' or
die 'NEDOSTUPNY TELNET na viper.cis.vutbr.cz';
while (<VIPER>) {
print ": $_";
if (/^... (...) (..) (..):(..):.. ....$/) {
$month = ((index 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec',$1) / 4)+1;
if ($month < 10) { $month = '0' . $month; }
$cas = "$month$2$3$4";
}
}
close VIPER;
unless ($cas) {
print 'spravcas.cron: nepodarilo se od viper.cis.vutbr.cz dostat spravny cas !';
exit;
}
if (`/bin/date $cas >/dev/null 2>&1`) {
print 'spravcas.cron: Nepodarilo se spravit cas v synchronizaci na viper.cis.vutbr.cz !';
}
-----
-----
Vzdycky to skonci na chybe, ze $cas je prazdne a ladici vypis za : ukazuje
na to, ze z telnetu se vrati vse mimo odpovidajiciho radku.
daytime je port 13
Další informace o konferenci Linux