Simple Network Time Protocol (SNTP) Client

S is for snakeoil

Last update: 18:50 UTC Thursday, July 28, 2005



Synopsis

sntp [{-h --help -?}][{ -v -V -W }][{-r -a}][-P prompt][-e minerr][-E maxerr][-c count][-d delay][address(es)]

Description

This program is a Simple Network Time Protocol (SNTP) client that can be used to query a Network TIme Protocol (NTP) server and display the time offset of the system clock relative to the server clock. Run as root it can correct the system clock to this offset as well. It can be run as an interactive command or from a script by a cron job. The program implements the SNTP protocol defined in RFC-2030, which is a subset of the NTP protocol defined in RFC-1305, but does not provide the sanity checks, access controls, security functions and mitigation algorithms as in the full NTP implementation.

While this program can do other things, including operation as a primitive server, some of these things are truly dangerous in a ubiquitous public time server network. A full disclosure is in the man page in the ./sntp directory, but be truly advised RFC-2030 specifically forbids a SNTP client to operate as a server for other NTP or SNTP clients. If such operation is contemplated, do not allow access by clients on the public Internet.

By default, sntp writes the local date and time (i.e., not UTC) to the standard output in the format

1996 Oct 15 20:17:25.123 + 4.567 +/- 0.089 secs,

where the + 4.567 +/- 0.089 secs indicates the time offset and error bound of the system clock relative to the server clock.

If a NTP server address is explicitly specified, the program sends a single message to the server and waits up to delay seconds for a unicast server message. Otherwise, it sends no message and waits up to delay seconds for a broadcast server message.

Options

sntp recognizes the following options:

-h, --help
displays usage information.
-v
writes diagnostic messages and a limited amount of tracing to standard error. The -v, -V and -W give increasing levels of detail.
-r
steps the system clock to the correct time by the Unix settimeofday system call. Requires root priviledge.
-a
slews the system clock to the correct time by the Unix adjtime system call. Requires root priviledge.
-e minerr
sets the minimum offset to minerr seconds. Measured offsets less than this are ignored. Acceptable values are from 0.001 to 1 with default 0.1 if unicast mode and 0.5 for broadcast mode.
-E maxerr
sets the maximum offset to maxerr seconds. Measured offsets greater than this are ignored. Acceptable values are from 1 to 60 with default 5.
-P prompt
sets the maximum automatic offset to maxerr seconds. Acceptable values are from 1 to 3600 or no, with default 30. If the program is being run interactively, measured offsets greater than this will prompt the user for confirmation. Specifying no will disable this and the correction will be made regardless.
-c count
sets the maximum number of NTP packets required to count. Acceptable values are from 1 to 25 in unicast mode and 5 to 25 in broadcast mode. The default is 5 in either mode.
-d delay
sets the maximum waiting time in broadcast mode to delay seconds. Acceptable values are from 1 to 3600, with default 15 in unicast mode and 300 in broadcast mode.

Return Value

The program returns an exit status of zero for success and non-zero otherwise.

Author

sntp was developed by N.M. Maclaren of the University of Cambridge Computing Service.