[megoldva,köszönöm] Webes időszinkronizálás honnan?

Sziasztok!

Tudtok olyan szervert, amit meg lehet hívni HTTP protokollal, és visszakapom tőle a pontos időt?

Köszönet előre is!

Kum Gábor
www.kumgabor.hu

Hozzászólások

Nem teljesen ertem milyen szinkorizaciora gondolsz http alapon.
Weboldal ahol meg tudod nezni az idot, vagy pl. cegnel csak http kereseket engedik ki es ezert kell h azon keresztul szinkronizalhasd a geped vagy mire kellene pontosan?

Valoszinu inkabb az utobbi. Amugy eleg egyszeruen lehet csinalni valahova egy plaintext idot visszaado CGI-t, sot csinaltunk is mar ilyent, csak nem publikus.

Viszont alljon itt egy UTC ido megjelenito C progi, ebbol nagyon konnyu CGI-t csinalni (1 printf kell meg bele):


#include <stdio.h>
#include <time.h>
#include <string.h>

int main() {
	time_t ido;
	struct tm *fido;
	char s[32];
	time(&ido);
	
	fido = gmtime(&ido);
	
	memset(s,0,32);
	strftime(s, 32, "%a, %d %b %Y %H:%M:%S %z", fido);

	printf("%s\n", s);

	return 0;
}

--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Hogy állítja elő az időbélyeget? Ha nem a "+%s"-t használja, akkor a TZ környezeti változóval már lehet is szépen trükközni -- a gép órája marad, csak a folyamat körül toljuk n órával idébb vagy odébb az időt.

Ha egy harmadik fél által üzemeltetett szerver óráját veszed fixnek (azaz az onnan visszakapott stringet tekinted időbélyegnek), akkor nem gond, bár ugye ott is lehet tologatni (tőled függetlenül) az órát, meg a TZ változót is...

Aha, Symmetricom S-350, a szabványos time protocolok melett tud http-n is pontos idöt közölni (és sok más formában).

date -s "`lynx -dump -head http://www.kernel.org|awk -F': ' '/Date: / {print $2}'`"

...

date -s "`lynx -dump -head http://hup.hu|awk -F': ' '/Date: / {print $2}'`"

--
trey @ gépház

nezd meg
Bar UDP-n szinkronizal az ntpdate (tudtommal), de talan kiindulasnak jo.

Magadnak akarsz pontos időt, vagy azt megnézni, hogy az adott szerveren a processz futásakor mennyi volt a rendszeridő? Az utóbbi simán megy, az előbbit meg... átlagban néhány másodperces eltéréssel fogod tudni megoldani...

A fentebb mutatott shell-es bűvészkedés helyett (időigényes művelet!) mindenképp egy röpke C-program elkövetését javasolnám, ami csinál egy darab HTTP-kérést (t0), abból minél egyszerűbben kihajítja a szükséges dolgokat, és mond egy időt t0+toda+tszerver_feld+tvisza+tlocal_feld idő múlva. Ezek közül a tlocal_feld mérhető, a toda és tvisza inkább csak becsülhető (mérés alapján), a szerver oldali feldolgozás ideje viszont nem nagyon -- legalábbis szerintem...

Köszönöm a segítséget mindenkinek, a megoldás az lett, hogy kerestem egy szervert, ami folyamatosan NTP-vel szinkronizálja az óráját, és onnan hívok meg egy PHP szkriptet, ami átad nekem egy timestampet.

--
Kum Gábor
www.kumgabor.hu