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