Solved

Using a perl script to get ntp time server info from registry on server 2003

Posted on 2008-10-02
7
835 Views
Last Modified: 2008-11-20
I have a perl script that I want to use to check and see if a windows 2003 server is correctly configured to get time from an ntp server.  It returns an error saying that the ntp server is not configured  Below is a portion of my code that deals with the time server check.  the rest of my script works fine  just the time server check fails.  Any help would be appreciated as I need to run this on approx 40 2003 servers each month.


use Win32::Registry;
    my $tserv;  
$::HKEY_LOCAL_MACHINE->Open("SOFTWARE\\Policies\\Microsoft\\W32Time\\Parameters", $tserv)
        or $tserv_error = 1;

if ($systype =~ backup) {
print "This script is being run on a backup controller, it will not show the correct timeserver IP";
}

if ($tserv_error = 1) {
      print "Error - It looks like the time server has not been configured on this system in gpedit.msc\n\n";  
      $ntpsource = "0.0.0.0";
      $ntpprotocol = "ERROR";
      }
      else
      {
    my ($type, $value);  
$tserv->QueryValueEx("NtpServer", $type, $value);
$tserv->QueryValueEx("Type", $type, $ntpprotocol);
($ntpsource, $junk) = split(',',$value);
print "TIMESERVER: $ntpsource\n";  
print "TIMESERVERTYPE: $ntpprotocol\n";  
      }
0
Comment
Question by:tnnetworks
  • 3
  • 3
7 Comments
 
LVL 39

Expert Comment

by:Adam314
ID: 22625187
Of the code you posted, which line generates the error?
0
 

Author Comment

by:tnnetworks
ID: 22625814
it dies not generate any errors it just never gets the time servers IP or type.  The output is sent to a txt file  The output of the txt file is here:  the 61341 is the server name  but I have NTP configured correctly and event view shows successful time syncs.

61341 - TIMESERVER: 0.0.0.0
61341 - TIMESERVERTYPE: ERROR
0
 
LVL 39

Expert Comment

by:Adam314
ID: 22625855
If you open up regedit, and look at the KEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\W32Time\Parameters\Type, what does it show?
0
ScreenConnect 6.0 Free Trial

Discover new time-saving features in one game-changing release, ScreenConnect 6.0, based on partner feedback. New features include a redesigned UI, app configurations and chat acknowledgement to improve customer engagement!

 
LVL 10

Expert Comment

by:MadShiva
ID: 22626078
Hi !

I have try your script, and i get the same result.

When i have look at the key, there is not folder W32Time. I have check again on a windows server 2003 and again the folder was not here. But in another workstation i have find where is located the folder.

Try to change

$::HKEY_LOCAL_MACHINE->Open("SOFTWARE\\Policies\\Microsoft\\W32Time\\Parameters", $tserv)

by

$::HKEY_LOCAL_MACHINE->Open("SYSTEM\\CurrentControlSet\\Services\\W32Time\\Parameters", $tserv)


Best Regards
0
 

Author Comment

by:tnnetworks
ID: 22629613
Under the registry settings when I follow the complete path  KEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\W32Time\Parameters\Type   type show as NTP

There are 3 registry keys under KEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\W32Time\Parameters\

They are
Default  No Value Set
NtpServer REG_SZ 10.1.36.94,0x1
Type   REG_SZ NTP
0
 

Author Comment

by:tnnetworks
ID: 22629617
Hi Mad  I tried what you are suggesting however I get the same results.  The script comes back and tells me that it looks like the time server is not configured.
0
 
LVL 39

Accepted Solution

by:
Adam314 earned 500 total points
ID: 22707062
The Win32::Registry module is obsolete.  You should be using the Win32::TieRegistry module instead.  Try this code... I've tested it, and it works on my machine.
use Win32::TieRegistry (Delimiter => '/');
 
my $W32Time = $Registry->{'HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/Parameters'}
  or die "Error - It looks like the time server has not been configured on this system in gpedit.msc\n\n";
 
my $value = (split(/,/, $W32Time->{"/NtpServer"}))[0];
my $type = $W32Time->{"/Type"};
 
print "Value=$value\n";
print "Type=$type\n";

Open in new window

0

Featured Post

Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

I've just discovered very important differences between Windows an Unix formats in Perl,at least 5.xx.. MOST IMPORTANT: Use Unix file format while saving Your script. otherwise it will have ^M s or smth likely weird in the EOL, Then DO NOT use m…
Many time we need to work with multiple files all together. If its windows system then we can use some GUI based editor to accomplish our task. But what if you are on putty or have only CLI(Command Line Interface) as an option to  edit your files. I…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

823 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question