[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Omaha.pm] Perl solution request



Paul Hanson wrote:
I know this can be done, but it's implementation is boggling me.

We have a ****ton of IBM servers, many of which are nearing their 'put
out to pasture' date.  The issue is finding out which ones are close
and which should be there by now.   Well, IBM conveniently has a web
page dedicated to this.  However, it's not easy to script.  I've made
several valiant but failed attempts with curl, lynx, links, etc.

I remember reading somewhere about a HTML::Mechanize I think it's
called, where you are able to get information from a page.  However,
with my limited Perl skills (=0) and my lack of time I was wondering
if you wouldn't mind looking in to this.

The URL is

http://www-307.ibm.com/pc/support/site.wss/warrantyLookup.do?type=XXXX&serial=XXXXXXX&country=897&iws=off
Where "X" could be the machine type and the serial number  I've been
able to manually plug in these with success.

Samples:
8676 - KP-DRC21
8843 - 99GTK75

Would you have time to look into this and help me find a solution?
Ideally, it would take a text file as input for the two variables and
spew the info out into a new text file.

If you have further questions or just want to mock me, feel free to email.

Thanks!
-Paul

Hi Paul --

Here's what I could do for you in 15m. WWW::Mechanize is pretty cool. From this point forward you'll need to parse the super-ugly humongous HTML table that IBM throws your data into. Perhaps try HTML::TableExtract? Should be pretty easy...?

I hope that helps you get going.

Cheers,

j





$ cat j.pl
use WWW::Mechanize;

my $mech = WWW::Mechanize->new();
my $url = "http://www-307.ibm.com/pc/support/site.wss/warrantyLookup.do?type=__AAA__&serial=__BBB__&country=897&iws=off";;

open (IN, "warranty_list.txt");
while (<IN>) {
  chomp;
  my ($type, $serial) = split " - ";
  my $tmpurl = $url;
  $tmpurl =~ s/__AAA__/$type/;
  $tmpurl =~ s/__BBB__/$serial/;
  print "Fetching $tmpurl...\n";
  $mech->get( $tmpurl );
  my @lines = split "\n", $mech->content;
  foreach (@lines) {
     if (/Expiration date/) {
        # This is where your data is... Hand $_ into HTML::TableExtract?

        # s/<.*?>//g;  # throw all HTML away...
        print;
        last;
     }
  }
  print "\n\n";
}


$ cat warranty_list.txt 8676 - KP-DRC21 8843 - 99GTK75 $ perl j.pl
Fetching http://www-307.ibm.com/pc/support/site.wss/warrantyLookup.do?type=8676&serial=KP-DRC21&country=897&iws=off...
           <table width="427" border="0" frame="border" cellspacing="0" cellpadding="0"><tr valign="top"><td valign="top" width="159"><b>Type:</b></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="120"><b>Model:</b></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="140"><b>Serial number:</b></td></tr><tr valign="top"><td valign="top" width="159">8676</td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="120">61X</td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="140">KPDRC21</td></tr><tr valign="top"><td colspan="5" valign="top"><br></td></tr><tr><td width="159"><img border="0" width="1" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm
.com/i/c.gif"></td><td width="120"></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="140"></td></tr><tr valign="top"><td valign="top" width="159"><b>Status:</b></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="120"><b>Expiration date:</b></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="140"><b>Location:</b></td></tr><tr valign="top"><td valign="top" width="159">Out of warranty</td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="120">2006-09-08</td><td valign="top" width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="140">UNITED STATES</td></tr><tr><td width="159"><img border="0" width="1" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="4"><img b
order="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="120"></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="140"></td></tr><tr><td width="159"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td valign="top" align="left" width="10"><img alt="Warranty service upgrades &amp; maintenance services" border="0" height="16" width="16" src="//www.ibm.com/i/v14/icons/fw_bold.gif"></td><td valign="top" align="left"><b><a class="fbox" href="http://www.ibm.com/support/warranties/us/";>Warranty service upgrades and maintenance services</a></b></td></tr></table></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="120"></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="140"></td></tr></table><table width="427" border="0" frame="border" cellspacing="0" cellpadding="0"><tr valign="t
op"><td valign="top"><br></td></tr><tr valign="top"><td valign="top"><b>Description:</b></td></tr><tr valign="top"><td valign="top">This product has a three year limited warranty and is entitled to parts, labor and on-site repair service. Service is available Monday-Friday, except holidays, with a next business day response objective. Many parts can also be delivered to you using the Customer Replaceable Unit (CRU) method.</td></tr></table>            <table width="427" border="0" cellspacing="0" cellpadding="0">

Fetching http://www-307.ibm.com/pc/support/site.wss/warrantyLookup.do?type=8843&serial=99GTK75 &country=897&iws=off...
           <table width="427" border="0" frame="border" cellspacing="0" cellpadding="0"><tr valign="top"><td valign="top" width="159"><b>Type:</b></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="120"><b>Model:</b></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="140"><b>Serial number:</b></td></tr><tr valign="top"><td valign="top" width="159">8843</td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="120">2RU</td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="140">99GTK75</td></tr><tr valign="top"><td colspan="5" valign="top"><br></td></tr><tr><td width="159"><img border="0" width="1" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm
.com/i/c.gif"></td><td width="120"></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="140"></td></tr><tr valign="top"><td valign="top" width="159"><b>Status:</b></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="120"><b>Expiration date:</b></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="140"><b>Location:</b></td></tr><tr valign="top"><td valign="top" width="159">In warranty</td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="120">2009-03-31</td><td valign="top" width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td valign="top" width="140">UNITED STATES</td></tr><tr><td width="159"><img border="0" width="1" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="4"><img borde
r="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="120"></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="140"></td></tr><tr><td width="159"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td valign="top" align="left" width="10"><img alt="Warranty service upgrades &amp; maintenance services" border="0" height="16" width="16" src="//www.ibm.com/i/v14/icons/fw_bold.gif"></td><td valign="top" align="left"><b><a class="fbox" href="http://www.ibm.com/support/warranties/us/";>Warranty service upgrades and maintenance services</a></b></td></tr></table></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="120"></td><td width="4"><img border="0" width="4" height="1" alt="" src="//www.ibm.com/i/c.gif"></td><td width="140"></td></tr></table><table width="427" border="0" frame="border" cellspacing="0" cellpadding="0"><tr valign="top">
<td valign="top"><br></td></tr><tr valign="top"><td valign="top"><b>Description:</b></td></tr><tr valign="top"><td valign="top">This product has a three year limited warranty and is entitled to parts, labor and on-site repair service. Service is available Monday-Friday, except holidays, with a next business day response objective. Many parts can also be delivered to you using the Customer Replaceable Unit (CRU) method.</td></tr></table>            <table width="427" border="0" cellspacing="0" cellpadding="0">