Here's the background.... I have an old machine running DSL that I use as a server for various projects. I reboot it every month or so to check the hard drives. I've noticed that after a few days the time starts go a little wonky. Just a little bit more each day.

So I was looking for something that I could automatically run each day to set the time. There were some good suggestions on the forum about installing an NTP client. I'm sure it's probably easy to do and works fine but I decided to try my hand at writing a script to do it.

It's not as acurate as an NTP client but it's close enough for what I need and it will work in native DSL.

I thought about setting the hardware clock also but then that might mess people up who dual-boot to windows.

One thing that I wasn't able to solve was setting the telnet timeout. How long the script waits trying to connect to time.nist.gov if my internet connection is down or if time.nist.gov is down? I'd like to be able to set a timeout parameter of 15 seconds but I don't see how. Anyone know how to change it?

-Enjoy

--------------======== Note =========The DSL Forum Search default is 'OR'If you search for "cat dog" you will get all "cat" posts and all "dog" posts. If you search for "cat AND dog" you will only find results that contain BOTH "cat" and "dog"Add '*' for wildcards, " cat* and dog* "

Reading this script and a request for how to handle timeout, made me think of such capability using Lua sockets.

So, just for fun, I cobbed together this little Lua socket program.

It is working well for me. I run it manually prefixed with sudo.I did not call date using sudo as in newOldUser's original, as I call this lua program from /opt/bootlocal.sh

Now when I boot my machine, I have a much more accurate clock set.

You can see socket level programming is at a lower level than calling bash functions. But it does provide much more control.

Code Sample

#! /bin/lua--[[# This lua script based in part of the idea expressed in# the bash script from newOldUser of the damnsmall linux forums# by Robert Shingledecker - 2007/02/17# This script gets time information from time.nist.gov in# universal time format. It then rearranges it into# the format that the date command uses MMDDhhmmCCYY.ss# and issues the date command as super user.## An internet connection must be available## sample of returned information follows#54144 07-02-13 16:14:43 00 0 0 95.3 UTC(NIST) *#1---0----1----1----2----2----3----3----4----4----5#1---5----0----5----0----5----0----5----0----5----0#--]]host = "time.nist.gov"port = 13target = {10,13,16,19,7,22}date = ""

timeserver,err = socket.connect(host,port)if err then print("Could not connect "..err) os.exit(1)end_,err = timeserver:send("anything\n")if err then print("Error in sending "..err) os.exit(1)endtimeserver:settimeout(0.10)while 1 do line,err = timeserver:receive('*l') if err then print("Error in receiving "..err) os.exit(1) end if string.find(line,"UTC") then for i = 1, 6 do if i == 5 then date = date .. "20" end if i == 6 then date = date .. "." end date = date .. string.sub(line,target[i],target[i]+1) end os.execute("date -u "..date) os.exit(0) endend

^thehatsrule^, thanks for the suggestion... I hadn't thought about doing a ping first. It's funny how my mind gets locked into doing something one way and other solutions get blocked.

Roberts, neat stuff... One of these days I'm going to learn LUA.

WDef, Sorry about being offtopic... I'm never sure where to put these things that I write. I have one or two other scripts that I need to pretty-up so I can share them. I had been putting them in the blogs but there are problems putting code in the blog area.

I was gone for a while, but still using DSL. I've come back to find that we're up to version 3.something and all my machines are at version 2.3 or below. Since I usually do a frugal install I'm hoping that upgrading will not be too difficult. I'm sure there are plenty of forum entries that will help me.

--------------======== Note =========The DSL Forum Search default is 'OR'If you search for "cat dog" you will get all "cat" posts and all "dog" posts. If you search for "cat AND dog" you will only find results that contain BOTH "cat" and "dog"Add '*' for wildcards, " cat* and dog* "