in reply to more Win32::EventLog oddities

Just a thought, have you tried accessing the machines that your failing on using the event viewer whilst logged on as whatever userid the script runs on?

The reason I ask is I once saw a similar problem with a script accessing stuff on a remote server. The script ran fine under the development account, but when run as a scheduled task on the production machine it would get so far and then hang and have to be killed.

When we went to the actual server (stuck away under lock and key in a remote server room) and switched on the screen, having worked out which combination of switches connected the single screen and keyboard to the right one of 10 or 12 boxes in the room (closet), we discovered that there was a "Invalid logon, try again" dialog sitting on the screen.

The one server (of a couple of hundred) where it kept hanging had a non-standard set of domain permissions.


Cor! Like yer ring! ... HALO dammit! ... 'Ave it yer way! Hal-lo, Mister la-de-da. ... Like yer ring!

Replies are listed 'Best First'.
Re: more Win32::EventLog oddities
by Reverend Phil (Pilgrim) on Sep 26, 2002 at 18:59 UTC
    Ahh, either I've miswritten or you've misread, but the problem is not so much that its failing on those computers... its not failing on those computers. It is treating 2-3 valid servers the same way its treating my invalid bogus server Crackhead.. that is.. it is successfully creating a Win32::Eventlog object. My problem is that if it fails to make a connection, I don't know how to determine that.. the object seems to be successfully generated.

    Thanks though,
    -=rev=-

      Your right, I did mis-read. I took

      2) I don't skip to the 'next' server

      To mean that you were hanging at that point. Sorry, my mistake.

      Thinking about this further, I have, what is no more than a speculation, that the new() call doesn't actually establish communications with the remote server, but simply readies the object for that communication. If this is true, then the way to determine if the server is actually there would be to check the return code from one of the calls that would force it to actually attempt the communication. Eg.

      $handle->GetOldest($base) or die "Can't get number of oldest EventLog record\n";
      .

      Like I say, this is speculation, but worth a try.


      Cor! Like yer ring! ... HALO dammit! ... 'Ave it yer way! Hal-lo, Mister la-de-da. ... Like yer ring!
        I agree with your speculation. I've looked back over some event log parsing and harvesting that I did last year, and it appears that even the  GetOldest(\$base) won't necessarily give a "good" error, but  GetNumber(\$count) will.