X-Git-Url: https://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/a23c322df805e9cce278bfd6f29f01a504dbd6ed..af87e7f8f1d508ba81f4349176b51a413a507f37:/blog/archive/2009/02/02.rss?ds=sidebyside diff --git a/blog/archive/2009/02/02.rss b/blog/archive/2009/02/02.rss index d1cf37ab14..e9f6f45dd4 100644 --- a/blog/archive/2009/02/02.rss +++ b/blog/archive/2009/02/02.rss @@ -3,13 +3,13 @@ Petter Reinholdtsen - Entries from February 2009 Entries from February 2009 - ../../../ + http://people.skolelinux.org/pere/blog/ Intellektuelt privilegium - et bedre IP-begrep - ../../../Intellektuelt_privilegium___et_bedre_IP_begrep.html - ../../../Intellektuelt_privilegium___et_bedre_IP_begrep.html + http://people.skolelinux.org/pere/blog/Intellektuelt_privilegium___et_bedre_IP_begrep.html + http://people.skolelinux.org/pere/blog/Intellektuelt_privilegium___et_bedre_IP_begrep.html Sun, 1 Feb 2009 15:06:00 +0100 <p>Ofte brukes intellektuell eiendom som samlebegrep for opphavsrett, @@ -37,8 +37,8 @@ forretningshemmeligheter framover.</p> Norge trenger en personvernforening - ../../../Norge_trenger_en_personvernforening.html - ../../../Norge_trenger_en_personvernforening.html + http://people.skolelinux.org/pere/blog/Norge_trenger_en_personvernforening.html + http://people.skolelinux.org/pere/blog/Norge_trenger_en_personvernforening.html Sun, 1 Feb 2009 18:35:00 +0100 <p>De siste årene har jeg forsøkt å få liv i @@ -59,8 +59,8 @@ nå får vi se om noen er enig.</p> Min reprap tar sakte form - ../../../Min_reprap_tar_sakte_form.html - ../../../Min_reprap_tar_sakte_form.html + http://people.skolelinux.org/pere/blog/Min_reprap_tar_sakte_form.html + http://people.skolelinux.org/pere/blog/Min_reprap_tar_sakte_form.html Tue, 3 Feb 2009 13:30:00 +0100 <p>Min reprap begynner å ta form. Den er nå kommet så langt at den er @@ -99,8 +99,8 @@ arbeidet.</p> Første vellykkede videostrøm fra NUUG - ../../../F__rste_vellykkede_videostr__m_fra_NUUG.html - ../../../F__rste_vellykkede_videostr__m_fra_NUUG.html + http://people.skolelinux.org/pere/blog/F__rste_vellykkede_videostr__m_fra_NUUG.html + http://people.skolelinux.org/pere/blog/F__rste_vellykkede_videostr__m_fra_NUUG.html Wed, 11 Feb 2009 06:30:00 +0100 <p>Jeg ble glad for å se under @@ -118,8 +118,8 @@ webserver og komprimert.</p> Endelig er Debian Lenny gitt ut - ../../../Endelig_er_Debian_Lenny_gitt_ut.html - ../../../Endelig_er_Debian_Lenny_gitt_ut.html + http://people.skolelinux.org/pere/blog/Endelig_er_Debian_Lenny_gitt_ut.html + http://people.skolelinux.org/pere/blog/Endelig_er_Debian_Lenny_gitt_ut.html Sun, 15 Feb 2009 11:50:00 +0100 <p>Endelig er <a href="http://www.debian.org/">Debian</a> @@ -139,8 +139,8 @@ bootsekvens tilgjengelig i stabil utgave, vha pakken Kart over overvåkningskamera i Norge - ../../../Kart_over_overv__kningskamera_i_Norge.html - ../../../Kart_over_overv__kningskamera_i_Norge.html + http://people.skolelinux.org/pere/blog/Kart_over_overv__kningskamera_i_Norge.html + http://people.skolelinux.org/pere/blog/Kart_over_overv__kningskamera_i_Norge.html Sun, 15 Feb 2009 22:30:00 +0100 <p>I regi av @@ -159,16 +159,16 @@ fikser en av disse manglene, men det vil fortsatt være umulig å vite om et kamera er registrert etter lovens krav eller ikke. Pr. nå er 22 kamera i Oslo registrert, og det trengs flere til å registrere alle. Informasjonen registreres direkte inn i <a -href="http://www.openstreetmap.org/">OpenStreetmap</a>, sa hentes det +href="http://www.openstreetmap.org/">OpenStreetmap</a>, så hentes det automatisk over i spesialkartet.</p> Using bar codes at a computing center - ../../../Using_bar_codes_at_a_computing_center.html - ../../../Using_bar_codes_at_a_computing_center.html - Fri, 20 Feb 2009 08:30:00 +0100 + http://people.skolelinux.org/pere/blog/Using_bar_codes_at_a_computing_center.html + http://people.skolelinux.org/pere/blog/Using_bar_codes_at_a_computing_center.html + Fri, 20 Feb 2009 08:50:00 +0100 <p>At work with the University of Oslo, we have several hundred computers in our computing center. This give us a challenge in tracking the @@ -214,5 +214,174 @@ easier automatic tracking of computers.</p> + + Checking server hardware support status for Dell, HP and IBM servers + http://people.skolelinux.org/pere/blog/Checking_server_hardware_support_status_for_Dell__HP_and_IBM_servers.html + http://people.skolelinux.org/pere/blog/Checking_server_hardware_support_status_for_Dell__HP_and_IBM_servers.html + Sat, 28 Feb 2009 23:50:00 +0100 + +<p>At work, we have a few hundred Linux servers, and with that amount +of hardware it is important to keep track of when the hardware support +contract expire for each server. We have a machine (and service) +register, which until recently did not contain much useful besides the +machine room location and contact information for the system owner for +each machine. To make it easier for us to track support contract +status, I've recently spent time on extending the machine register to +include information about when the support contract expire, and to tag +machines with expired contracts to make it easy to get a list of such +machines. I extended a perl script already being used to import +information about machines into the register, to also do some screen +scraping off the sites of Dell, HP and IBM (our majority of machines +are from these vendors), and automatically check the support status +for the relevant machines. This make the support status information +easily available and I hope it will make it easier for the computer +owner to know when to get new hardware or renew the support contract. +The result of this work documented that 27% of the machines in the +registry is without a support contract, and made it very easy to find +them. 27% might seem like a lot, but I see it more as the case of us +using machines a bit longer than the 3 years a normal support contract +last, to have test machines and a platform for less important +services. After all, the machines without a contract are working fine +at the moment and the lack of contract is only a problem if any of +them break down. When that happen, we can either fix it using spare +parts from other machines or move the service to another old +machine.</p> + +<p>I believe the code for screen scraping the Dell site was originally +written by Trond Hasle Amundsen, and later adjusted by me and Morten +Werner Forsbring. The HP scraping was written by me after reading a +nice article in ;login: about how to use WWW::Mechanize, and the IBM +scraping was written by me based on the Dell code. I know the HTML +parsing could be done using nice libraries, but did not want to +introduce more dependencies. This is the current incarnation:</p> + +<pre> +use LWP::Simple; +use POSIX; +use WWW::Mechanize; +use Date::Parse; +[...] +sub get_support_info { + my ($machine, $model, $serial, $productnumber) = @_; + my $str; + + if ( $model =~ m/^Dell / ) { + # fetch website from Dell support + my $url = "http://support.euro.dell.com/support/topics/topic.aspx/emea/shared/support/my_systems_info/no/details?c=no&amp;cs=nodhs1&amp;l=no&amp;s=dhs&amp;ServiceTag=$serial"; + my $webpage = get($url); + return undef unless ($webpage); + + my $daysleft = -1; + my @lines = split(/\n/, $webpage); + foreach my $line (@lines) { + next unless ($line =~ m/Beskrivelse/); + $line =~ s/&lt;[^>]+?>/;/gm; + $line =~ s/^.+?;(Beskrivelse;)/$1/; + + my @f = split(/\;/, $line); + @f = @f[13 .. $#f]; + my $lastend = ""; + while ($f[3] eq "DELL") { + my ($type, $startstr, $endstr, $days) = @f[0, 5, 7, 10]; + + my $start = POSIX::strftime("%Y-%m-%d", + localtime(str2time($startstr))); + my $end = POSIX::strftime("%Y-%m-%d", + localtime(str2time($endstr))); + $str .= "$type $start -> $end "; + @f = @f[14 .. $#f]; + $lastend = $end if ($end gt $lastend); + } + my $today = POSIX::strftime("%Y-%m-%d", localtime(time)); + tag_machine_unsupported($machine) + if ($lastend lt $today); + } + } elsif ( $model =~ m/^HP / ) { + my $mech = WWW::Mechanize->new(); + my $url = + 'http://www1.itrc.hp.com/service/ewarranty/warrantyInput.do'; + $mech->get($url); + my $fields = { + 'BODServiceID' => 'NA', + 'RegisteredPurchaseDate' => '', + 'country' => 'NO', + 'productNumber' => $productnumber, + 'serialNumber1' => $serial, + }; + $mech->submit_form( form_number => 2, + fields => $fields ); + # Next step is screen scraping + my $content = $mech->content(); + + $content =~ s/&lt;[^>]+?>/;/gm; + $content =~ s/\s+/ /gm; + $content =~ s/;\s*;/;;/gm; + $content =~ s/;[\s;]+/;/gm; + + my $today = POSIX::strftime("%Y-%m-%d", localtime(time)); + + while ($content =~ m/;Warranty Type;/) { + my ($type, $status, $startstr, $stopstr) = $content =~ + m/;Warranty Type;([^;]+);.+?;Status;(\w+);Start Date;([^;]+);End Date;([^;]+);/; + $content =~ s/^.+?;Warranty Type;//; + my $start = POSIX::strftime("%Y-%m-%d", + localtime(str2time($startstr))); + my $end = POSIX::strftime("%Y-%m-%d", + localtime(str2time($stopstr))); + + $str .= "$type ($status) $start -> $end "; + + tag_machine_unsupported($machine) + if ($end lt $today); + } + } elsif ( $model =~ m/^IBM / ) { + # This code ignore extended support contracts. + my ($producttype) = $model =~ m/.*-\[(.{4}).+\]-/; + if ($producttype &amp;&amp; $serial) { + my $content = + get("http://www-947.ibm.com/systems/support/supportsite.wss/warranty?action=warranty&amp;brandind=5000008&amp;Submit=Submit&amp;type=$producttype&amp;serial=$serial"); + if ($content) { + $content =~ s/&lt;[^>]+?>/;/gm; + $content =~ s/\s+/ /gm; + $content =~ s/;\s*;/;;/gm; + $content =~ s/;[\s;]+/;/gm; + + $content =~ s/^.+?;Warranty status;//; + my ($status, $end) = $content =~ m/;Warranty status;([^;]+)\s*;Expiration date;(\S+) ;/; + + $str .= "($status) -> $end "; + + my $today = POSIX::strftime("%Y-%m-%d", localtime(time)); + tag_machine_unsupported($machine) + if ($end lt $today); + } + } + } + return $str; +} +</pre> + +<p>Here are some examples on how to use the function, using fake +serial numbers. The information passed in as arguments are fetched +from dmidecode.</p> + +<pre> +print get_support_info("hp.host", "HP ProLiant BL460c G1", "1234567890" + "447707-B21"); +print get_support_info("dell.host", "Dell Inc. PowerEdge 2950", "1234567"); +print get_support_info("ibm.host", "IBM eserver xSeries 345 -[867061X]-", + "1234567"); +</pre> + +<p>I would recommend this approach for tracking support contracts for +everyone with more than a few computers to administer. :)</p> + +<p>Update 2009-03-06: The IBM page do not include extended support +contracts, so it is useless in that case. The original Dell code do +not handle extended support contracts either, but has been updated to +do so.</p> + + +