simple script to set system clock
Forum: Programming and Scripting
Topic: simple script to set system clock
started by: newOldUser
Posted by newOldUser on Feb. 17 2007,17:18Here'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?
Posted by ^thehatsrule^ on Feb. 17 2007,18:37You could kill that process if there's no easy timeout solution...
Or you could do something like a test ping of that site first, before you proceed with the rest of the script.
Posted by roberts on Feb. 18 2007,05:46Reading 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.
Posted by WDef on Feb. 18 2007,12:25One idea inspires another.
Off-topic, but good to see you around Newolduser :=) I thought you'd vanished off the forum!
Posted by newOldUser on Feb. 18 2007,14:40^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.
Posted by humpty on Feb. 20 2007,15:08it looks like telnet needs sudo too;
sudo telnet time.nist.gov 13 > nistTime.txt
vFound=$(cat nistTime.txt | grep "UTC(NIST)")
if [ ! -z "$vFound" ]; then
sudo date -u "$vDateTime"
timediff=`expr $time2 - $time1`
echo corrected by "$timediff" seconds
umm,, how do you update this to the fluxbox toolbar ?
Posted by mikshaw on Feb. 20 2007,17:05If your commands are in a script, you can simply run the script as sudo rather than adding multiple sudo commands to the script.
If fluxbox is not automatically updating, just restart it. You don't need to restart x if this is done from the Fluxbox confguration submenu, so you won't lose your open applications.
I think it will update itself if you wait a bit, but i'm not sure about that.
If your script is run from bootlocal (assuming your network is set up automatically), both issues should be handled already.
Posted by humpty on Feb. 20 2007,18:53quite right mikshaw. easy way to force the fluxbox update is to right-click near it so the menu covers it, then left-click on empty space.
Posted by newOldUser on Feb. 21 2007,00:33Hmmmmm.... interesting..... I don't have to do an sudo telnet.
The machine I wrote this for has a frugal install of DSL version 2.2 I'm not sure why I don't need an 'sudo telnet'
Posted by humpty on Feb. 21 2007,10:08
maybe you don't. just that whenever i don't use sudo, the telnet just hangs there..(?)
Posted by roberts on Feb. 21 2007,14:52I have updated my Lua script so that the NIST timeserver can be specified and also the initial connection timeout defaults to 5 seconds but can be user specified as well.
Please choose a timeserver nearest to you so that we all don't gang up on one. See the URL embedded for a list.
Posted by WDef on Feb. 21 2007,21:21
No, no you misunderstand! It was ME that was offtopic - I was posting about not seeing you 'round the forum for a while! I don't think there's anything 'offtopic' about your post. I wasn't clear I know.
Anyway - keep up the scripting, let's see the other efforts :=)