ntpd statt rdate

Wünsche, Anträge, Fehlermeldungen
JimPoison
Einsteiger
Einsteiger
Beiträge: 312
Registriert: Samstag 29. November 2003, 00:20

ntpd statt rdate

Beitrag von JimPoison »

ich möchte hiermit mal den vorschlag machen, rdate durch ntpclient zu ersetzen.
ich habe mir neuerdings openntpd auf meinem router aufgesetzt, welcher als ntp-server für alle meine lokalen pcs und dboxen dienen soll.
bei den pcs inkl. windows-rechnern klappt das auch alles, allerdings ist standardmäßig in der dbox bzw. der busybox jawohl nur rdate drin, was jawohl nicht wirklich ntp nutzt, sondern das ältere time-format auf tcp-port 37, während ntp den udp-port 123 benutzt.
es gibt bei rdate ja normalertweise wohl den parameter -n, mit dem man rdate zwingen kann, udp zu benutzen, allerdings scheint die rdate in der busybox nur ne kastrierte version zu sein, die einige parameter nicht kennt. anscheinend geht nur -s.

die ntp-einstellungen unter "netzwerk" für das korrekte setzen der uhrzeit sind dann ja strenggenommen falsch benannt, da ja auch hier (wenn ich das richtig sehe) rdate benutzt wird, was mit richtigen ntp eigentlich nix zu tun hat.
natürlich kann ich die box sich die zeit direkt aus dem internet von einem server holen lassen, der mit rdate noch was anfangen kann, aber wenn ich schonmal lokal einen ntp-server habe, würde ich den auch gerne komplett nutzen.
außerdem ist jeder gesparte internet-traffic zu begrüßen (auch wenn die übertragenen daten sich wohl in recht kleinem umfang bewegen werden)

wenn jemand noch nen anderen vorschlag oder workaround für mich hat: immer her damit! :wink:
MarcM
Foren-Moderator
Beiträge: 1119
Registriert: Sonntag 9. Juni 2002, 13:28

Re: ntpd statt rdate

Beitrag von MarcM »

kann ich bestätigen... und außerdem dafür :D

Marc
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: ntpd statt rdate

Beitrag von GetAway »

http://doolittle.icarus.com/ntpclient/

Muss nur einer reinmachen :)
Keine Ahnung wie groß das Binary wird.

Ist auch von der Busybox Seite drauf verlinkt.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: ntpd statt rdate

Beitrag von mb405 »

ich hab ntp schon ne weile drin.
oldmake

rules.archive
ntp-4.2.4p5.tar.gz;http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/

rules.make
ntpd;4.2.4p5;ntp-4.2.4p5;ntp-4.2.4p5.tar.gz;extract:ntp-4.2.4p5.tar.gz

Makefile.am
$(DEPDIR)/ntpd: bootstrap @DEPENDS_ntpd@
@PREPARE_ntpd@
cd @DIR_ntpd@ && \
$(BUILDENV) \
./configure \
--build=$(build) \
--host=$(target) \
--prefix= \
$(MAKE) all && \
@INSTALL_ntpd@
@CLEANUP_ntpd@
touch $@

und aufgerufen wirds wie rdate mit ntpdate de.pool.ntp.org
vorteil. man kann fast alle server nehmen dafür.
vorteil von ntpclient ist halt, das es kleiner ist als ntpdate
Usage: ntpclient [-c count] [-d] -h hostname [-i interval] [-l]
[-p port] [-r] [-s]
/var # ntpclient -c 1 -d -h de.pool.ntp.org
Configuration:
-c probe_count 1
-d (debug) 1
-h hostname de.pool.ntp.org
-i interval 600
-l live 0
-p local_port 0
-s set_clock 0
Listening...
Sending ...
packet of length 48 received
Source: INET Port 123 host 78.46.194.188
LI=0 VN=3 Mode=4 Stratum=2 Poll=4 Precision=-20
Delay=17746.0 Dispersion=54794.3 Refid=130.149.17.8
Reference 3445587087.0219468198
Originate 3445589657.3687792055
Receive 3445589658.1540856389
Transmit 3445589658.1540926538
Our recv 3445589657.3894225362
Total elapsed: 48064.00
Server stall: 16.33
Slop: 48047.67
Skew: 476103.75
Frequency: 0
day second elapsed stall skew dispersion freq
54899 44057.906 48064.0 16.3 476103.8 54794.3 0
Zuletzt geändert von mb405 am Montag 9. März 2009, 13:15, insgesamt 1-mal geändert.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: ntpd statt rdate

Beitrag von dbt »

Sieht für Head etwas anders aus. Was die Größe angeht muss man ja nicht alles in den Flash packen, dann bleibt die Größe im Rahmen.
Hier mal zum testen ntpd. Aufrufen mit make ntpd oder für flash make flash-ntpd. Ist in Contrib-apps untergebracht, müsste/könnte man also customized einbauen und was man nicht braucht weglassen oder hinterher löschen, was auch immer.
ntpd-diff-2009-03-09-12-13-53.patch

die Binaries: ntpd.7z
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: ntpd statt rdate

Beitrag von rhabarber1848 »

und ab damit ins CVS...
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: ntpd statt rdate

Beitrag von mb405 »

ntpclient geht auch :)

cdk/configure.ac

Code: Alles auswählen

TUXBOX_RULES_MAKE(ntpclient)
cdk/Makefile.am

Code: Alles auswählen

$(DEPDIR)/ntpclient: bootstrap @DEPENDS_ntpclient@
	@PREPARE_ntpclient@
	cd @DIR_ntpclient@ && \
		$(BUILDENV) \
		$(MAKE) all && \
		$(INSTALL) -m755 ntpclient $(targetprefix)/bin/ntpclient && \
	cd ..
	@CLEANUP_ntpclient@
	touch $@
cdk/rules-archive

Code: Alles auswählen

ntpclient_2000_339.tar.gz;http://doolittle.icarus.com/ntpclient/
cdk/rules-install

Code: Alles auswählen

ntpclient;make:install:DESTDIR=TARGET
cdk/rules-make

Code: Alles auswählen

ntpclient;2000_339;ntpclient;ntpclient_2000_339.tar.gz;extract:ntpclient_2000_339.tar.gz
das ist für oldmake. newmake is das nicht viel anders die Mkefile.am nicht und dafür das
cdk/make/contrib-apps.mk

Code: Alles auswählen

contrib_apps: bzip2 console_data kbd fbset lirc lsof dropbear ssh tcpdump bonnie $(TARGET_LUFS) kermit wget ncftp screen lzma_utils ntpd ntpclient

CONTRIB_DEPSCLEANUP = rm -f .deps/bzip2 .deps/console_data .deps/kbd .deps/directfb_examples .deps/fbset .deps/lirc .deps/lsof .deps/ssh .deps/tcpdump .deps/bonnie .deps/vdr .deps/lufs .deps/dropbear .deps/kermit .deps/wget .deps/ncftp .deps/screen .deps/lzma_utils .deps/ntpd .deps/ntpclient

# ntpclient
$(DEPDIR)/ntpclient: bootstrap @DEPENDS_ntpclient@
	@PREPARE_ntpclient@
	cd @DIR_ntpclient@ && \
		$(BUILDENV) \
		$(MAKE) all && \
		$(INSTALL) -m755 ntpclient $(targetprefix)/bin/ntpclient && \
	cd ..
	@CLEANUP_ntpclient@
	touch $@

if TARGETRULESET_FLASH
flash-ntpclient: $(flashprefix)/root/bin/ntpclient

$(flashprefix)/root/bin/ntpclient: ntpclient | $(flashprefix)/root
	@$(INSTALL) -d $(flashprefix)/root/bin
		@for i in ntpclient; do \
		$(INSTALL) $(targetprefix)/bin/$$i $(flashprefix)/root/bin; done;
	@FLASHROOTDIR_MODIFIED@

endif
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: ntpd statt rdate

Beitrag von GetAway »

@mb405

Wie groß werden die Binary's?
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: ntpd statt rdate

Beitrag von rhabarber1848 »

Code: Alles auswählen

# ls -la | grep "ntpdate\|ntpclient"
-rwxr-xr-x  1 root root   26136 10. Mär 23:59 ntpclient
-rwxr-xr-x  1 root root   53864 10. Mär 23:59 ntpdate
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: ntpd statt rdate

Beitrag von rhabarber1848 »

mb405 hat geschrieben:ntpclient geht auch :)
Jetzt auch im CVS...
JimPoison
Einsteiger
Einsteiger
Beiträge: 312
Registriert: Samstag 29. November 2003, 00:20

Re: ntpd statt rdate

Beitrag von JimPoison »

rhabarber1848 hat geschrieben: Jetzt auch im CVS...
jetzt mal ne ganz dumme frage: was bringt mir das bisher eingecheckte als normaluser? die binaries an sich sind jawohl noch nicht drin, und mit dem selber anpassen ist es bei mir nicht so weit her. selber ausschecken und kompilieren krieg ich ja noch hin, aber das wars dann auch :oops:


und wie wäre es denn, rdate komplett mit ntpclient zu ersetzen?
gut rdate ist teil der busybox (und bleibt somit dann wohl als befehl an sich drin), aber ich meine z.b. die ntp-funktion in den netzwerkeinstellungen, die ja wohl bisher auf einem rdate aufruf beruht (also eigentlich nicht wirklich ntp ist).
kann man dort nicht den rdate-aufruf mit nem ntpclient-aufruf ersetzen?
oder gäbs da irgendwelche nachteile? (ich sehe jetzt keinen....)
kann rdate irgendetwas besser oder mehr als ntclient/ntpdate?

ok die binary von ntclient ist 26kb groß, aber die paar kilobyte sollte man doch verschmerzen können (könnte also von mir aus auch ins cvs rein)
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: ntpd statt rdate

Beitrag von mb405 »

eigentlich müsste das im sectionsd.cpp code angepasst werden
keine ahnung wie das gemacht werden muss.
so isses jetzt

Code: Alles auswählen

const std::string ntp_system_cmd_prefix = "/sbin/rdate -s ";
so mal auf die schnelle pseudocode

const std::string ntp_system_cmd_prefix = "";
wenn( /pfad/ntplient) da ist dann
ntp_system_cmd_prefix = "/pfad/ntpclient -s -h ";
wenn ( /pfad/ntpdate ) da ist dann
ntp_system_cmd_prefix = "/pfad/ntpdate ";
alsonsten
ntp_system_cmd_prefix = "/sbin/rdate -s ";

so in der art ;)
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: ntpd statt rdate

Beitrag von dbt »

rdate ist default, also das müsste schon so bleiben. Es müssten nur einige Steuerpaare oder case ... was auch immer für eine Kontrollstruktur rein, um das entsprechend umzubiegen, auch in Bezug auf evtl. Benutzeranpassungen, wo die Binaries in /var/bin liegen könnten, müsste man das berücksichtigen, dann wäre alles für kommende Images abgedeckt. Gleiches gilt für rcS.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: ntpd statt rdate

Beitrag von rhabarber1848 »

Wie wäre es, ein Skript /var/etc/init.d/rdate anzulegen, was von
sectionsd & Co. aufgerufen wird. Der jeweilige Inhalt kann dann vom
User festgelegt werden.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: ntpd statt rdate

Beitrag von dbt »

Vom Code auf Scripte zugreifen, nur wenn es nicht anders geht. In dem Fall kann man das eigentlich ohne Script machen. Man weis eigentlich genau was es für Möglichkeiten gibt. Eine switch-Struktur müsste genügen. Genauso in rcS.
JimPoison
Einsteiger
Einsteiger
Beiträge: 312
Registriert: Samstag 29. November 2003, 00:20

Re: ntpd statt rdate

Beitrag von JimPoison »

dbt hat geschrieben:Vom Code auf Scripte zugreifen, nur wenn es nicht anders geht. In dem Fall kann man das eigentlich ohne Script machen. Man weis eigentlich genau was es für Möglichkeiten gibt. Eine switch-Struktur müsste genügen. Genauso in rcS.
dafür!!! :)
JimPoison
Einsteiger
Einsteiger
Beiträge: 312
Registriert: Samstag 29. November 2003, 00:20

Re: ntpd statt rdate

Beitrag von JimPoison »

so und wer traut sich da jetzt ran? :-?
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: ntpd statt rdate

Beitrag von rhabarber1848 »

JimPoison hat geschrieben:so und wer traut sich da jetzt ran? :-?
Der, der fragt :D
JimPoison
Einsteiger
Einsteiger
Beiträge: 312
Registriert: Samstag 29. November 2003, 00:20

Re: ntpd statt rdate

Beitrag von JimPoison »

rhabarber1848 hat geschrieben: Der, der fragt :D
das hab ich befürchtet..... :lol:
bin bloß leider, was das programmieren angeht, eher unfähig :dash:
JimPoison
Einsteiger
Einsteiger
Beiträge: 312
Registriert: Samstag 29. November 2003, 00:20

Re: ntpd statt rdate

Beitrag von JimPoison »

*schieb*
JimPoison
Einsteiger
Einsteiger
Beiträge: 312
Registriert: Samstag 29. November 2003, 00:20

Re: ntpd statt rdate

Beitrag von JimPoison »

wieso muß rdate eigentlich unbedingt drinbleiben?
wenn ich das richtig sehe ist rdate doch eigentlich veraltet und benutzt ein vollkommen anderes protokoll und nen anderen port als ntp.
in dem zusammenhang will ich auch nochmal darauf hinweisen, daß in den netzwerkeinstellungen immer von "ntp" die rede ist, obwohl tatsächlich rdate benutzt wird. rdate hat aber ja eigentlich (außer das beide datum und zeit aktualisieren können) absolut nichts mit ntp zu tun. insofern wäre es dann vielleicht konsequent, dann auch wirklich ntp zum default zu machen.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: ntpd statt rdate

Beitrag von mb405 »

eigentlich ist das kein problem, von der idee her so(glaube habe ich schon geschrieben)

Code: Alles auswählen

const std::string ntp_system_cmd_prefix = "/sbin/rdate -s ";

const std::string ntp_system_cmd_prefix = "/sbin/ntpdate ";

const std::string ntp_system_cmd_prefix = "/sbin/ntpclient -s -h ";
je nachdem was du nutzen willst. in die sectionsd.cpp rein

ich hab jetzt keine ahnung ob das wirklich const sein muss. ansonsten könnte man das flexibler machen.

ein bischen pseudo code, der so nicht geht :)

Code: Alles auswählen

std::string ntp_system_cmd_prefix = "";
if( exist /sbin/ntpclient)
   std::string ntp_system_cmd_prefix = "/sbin/ntpclient -s -h ";
else if(exist /sbin/ntpdate)
   std::string ntp_system_cmd_prefix = "/sbin/ntpdate ";
else
    std::string ntp_system_cmd_prefix = "/sbin/rdate -s ";