I've written a Perl script to automate the addition of nodes to
WhatsUp. I've developed it primarily on my workstation, running
both the script and the WhatsUp service on the same machine.

I'm at the point of deploying the script via a GPO startup script,
so it will be running on one server at a time to add itself to the
WhatsUp service on another server. As well as any new servers as
the domain grows.

Big surprise, the code that worked fine when both the script and the
Whatsup were on the same machine does not work when the 2 are
on different machines. The GETs work fine, but its the POSTs that are
failing. They always indicate an "Internal Server Error" when
I run the script from a node where the WUPG server is not local.

This is one of the POST subroutines:

sub write_to_disk {

    # The map changes are only in memory, until we save it to disk

    my $ua = new LWP::UserAgent;
    my $req = POST $url."/MapSettingsSave.asp", [ Title            =>
$_[0].'.wup',
                                                  Active            => '1',
                                                  Timer             =>
'60',
                                                  Timeout           => '5',
                                                  WriteMapToDiskNow => '1',
                                                  map               =>
$_[0].'.wup',
                                                  end               =>
'end' ];
    print LOGFILE ("POST writetodisk $_[0]\n");
    $req->authorization_basic($user, $password);
    $content = $ua->request($req);
    return;
}

When I enable debug, all the GETs indicate:
LWP::UserAgent::_need_proxy: Not proxied
LWP::Protocol::http::request: ()
LWP::Protocol::http::request: reading response
LWP::Protocol::http::request: HTTP/1.0 200 CREATED
---The next line is repeated 6 times---
LWP::Protocol::http::request: need more header data
---The next line repated 73 times with varying byte counts---
LWP::Protocol::collect: read 63 bytes
LWP::UserAgent::request: Simple response: OK

While all of the POSTs indicate:
LWP::UserAgent::_need_proxy: Not proxied
LWP::Protocol::http::request: ()
LWP::Protocol::http::request: reading response
LWP::Protocol::http::request: HTTP/1.0 200 CREATED
LWP::Protocol::http::request: need more header data
LWP::UserAgent::request: Simple response: Internal Server Error

I've looked at Netmon captures that were successful and unsuccessful.
There was some difference between the headers, but I tried adding
the header info to the script and it did not make a difference.

Another thing I noticed is that POST action from a true browser is
transferred in a single frame:
.........\w...E..B.`@[EMAIL PROTECTED]/devicesave.a
sp.HTTP/1.1..Accept:.image/gif,.image/x-xbitmap,.image/jpeg,.image/pjpeg
,.*/*..Referer:.http://10.84.20.144:8000/newdevice.asp?map=10.84.220.0.w
up..Accept-Language:.en-us..Content-Type:.application/x-www-form-urlenco
ded..Accept-Encoding:.gzip,.deflate..User-Agent:.Mozilla/4.0.(compatible
;.MSIE.5.01;.Windows.NT.5.0)..Host:.10.84.20.144:8000..Content-Length:.3
20..Connection:.Keep-Alive..Cache-Control:.no-cache..Authorization:.Basi
c.YWRtaW46YWRtaW4=....map=10.84.220.0.wup&CreateNewDevice=true&Title=new
host&HostName=127.0.0.1&IP=127.0.0.1&PollType=ICMP&HostType=Workstation&
Info1=&Info2=&ReadComm=public&WriteComm=&OID=&Logging=1&Monitoring=1&Sta
rtTime=0000&EndTime=2400&Sun=1&Mon=1&Tues=1&Wedn=1&Thur=1&Fri=1&Sat=1&Po
llFreq=1&Timeout=5000&DownDep=0&UpDep=0&Notes=&end=end..

But the POST from the script is transmitted in 2 frames.
Frame1:
.........\w...E.....@[EMAIL PROTECTED]/devicesave.a
sp.HTTP/1.0..Authorization:.Basic.YWRtaW46YWRtaW4=..Host:.ilcsw1.xxxxxx.
acme.com:8000..User-Agent:.libwww-perl/5.51..Content-Length:.409..Conten
t-Type:.application/x-www-form-urlencoded....
Frame2:
.........\w...E.....@....)[EMAIL PROTECTED]'P...x>..map=10.84.220.0.wu
p&CreateNewDevice=true&Title=zzzzzzzz&HostName=zzzzzzzz.xx.acme.com&IP=1
0.84.220.16&PollTyple=ICMP&HostType=Server&Info1=AD+Domain+Controller+an
d+DNS&Info2=&Snmp=1&ReadComm=bbbbbbbbbbbbbb&WriteComm=aaaaaaaaaaaa&OID=1
.3.6.1.4.1.232&Logging=1&Monitoring=1&StartTime=0000&EndTime=2400&Sun=1&
Mon=1&Tues=1&Wedn=1&Thur=1&Fri=1&Sat=1&PollFreq=1&TimeOut=5000&DownDep=&
UpDep=1371521537&Notes=&end=end

Either way, there is a HTTP/1.0 200 CREATED after each frame.
Not really sure if this is a LWP usage issue (my first time working
with it) or an anomaly in the WhatsUp web server.

Thanks




Please visit http://www.ipswitch.com/support/mailing-lists.html 
to be removed from this list.

An Archive of this list is available at:
http://www.mail-archive.com/whatsup_forum%40list.ipswitch.com/

Reply via email to