<link></link>
<atom:link href="index.rss" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Checking server hardware support status for Dell, HP and IBM servers</title>
+ <link>Checking_server_hardware_support_status_for_Dell__HP_and_IBM_servers.html</link>
+ <guid isPermaLink="true">Checking_server_hardware_support_status_for_Dell__HP_and_IBM_servers.html</guid>
+ <pubDate>Sat, 28 Feb 2009 23:50:00 +0100</pubDate>
+ <description>
+<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 =~ m%;(\d{2})/(\d{2})/(\d{4});+(\d{2})/(\d{2})/(\d{4});%g;
+ my $start = "$3-$1-$2";
+ my $end = "$6-$4-$5";
+ $str = "$start -> $end";
+ my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
+ tag_machine_unsupported($machine)
+ if ($end 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 / ) {
+ 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 new computers to administer. :)</p>
+</description>
+ </item>
+
+ <item>
+ <title>Using bar codes at a computing center</title>
+ <link>Using_bar_codes_at_a_computing_center.html</link>
+ <guid isPermaLink="true">Using_bar_codes_at_a_computing_center.html</guid>
+ <pubDate>Fri, 20 Feb 2009 08:50:00 +0100</pubDate>
+ <description>
+<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
+location and cabling of the computers, when they are added, moved and
+removed. Some times the location register is not updated when a
+computer is inserted or moved and we then have to search the room for
+the "missing" computer.</p>
+
+<p>In the last issue of Linux Journal, I came across a project
+<a href="http://www.libdmtx.org/">libdmtx</a> to write and read bar
+code blocks as defined in the
+<a href="http://en.wikipedia.org/wiki/Data_Matrix">The Data Matrix
+Standard</a>. This is bar codes that can be read with a normal
+digital camera, for example that on a cell phone, and several such bar
+codes can be read by libdmtx from one picture. The bar code standard
+allow up to 2 KiB to be written in the tag. There is another project
+with <a href="http://www.terryburton.co.uk/barcodewriter/">a bar code
+writer written in postscript</a> capable of creating such bar codes,
+but this was the first time I found a tool to read these bar
+codes.</p>
+
+<p>It occurred to me that this could be used to tag and track the
+machines in our computing center. If both racks and computers are
+tagged this way, we can use a picture of the rack and all its
+computers to detect the rack location of any computer in that rack.
+If we do this regularly for the entire room, we will find all
+locations, and can detect movements and removals.</p>
+
+<p>I decided to test if this would work in practice, and picked a
+random rack and tagged all the machines with their names. Next, I
+took pictures with my digital camera, and gave the dmtxread program
+these JPEG pictures to see how many tags it could read. This worked
+fairly well. If the pictures was well focused and not taken from the
+side, all tags in the image could be read. Because of limited space
+between the racks, I was unable to get a good picture of the entire
+rack, but could without problem read all tags from a picture covering
+about half the rack. I had to limit the search time used by dmtxread
+to 60000 ms to make sure it terminated in a reasonable time frame.</p>
+
+<p>My conclusion is that this could work, and we should probably look
+at adjusting our computer tagging procedures to use bar codes for
+easier automatic tracking of computers.</p>
+</description>
+ </item>
+
<item>
<title>Kart over overvåkningskamera i Norge</title>
<link>Kart_over_overv__kningskamera_i_Norge.html</link>
har et register over kameraovervåkning, men det viser seg å være
ubrukelig både til å finne ut hvor det er kamera plassert, og til å
sjekke om et kamera en kommer over er registrert. Dette nye kartet
-fikser e av disse manglene, men det vil fortsatt være umulig å vite
+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
</description>
</item>
- <item>
- <title>ODF-bruk i staten, ikke helt på plass</title>
- <link>ODF_bruk_i_staten__ikke_helt_p___plass.html</link>
- <guid isPermaLink="true">ODF_bruk_i_staten__ikke_helt_p___plass.html</guid>
- <pubDate>Thu, 22 Jan 2009 23:00:00 +0100</pubDate>
- <description>
-<p>I går publiserte
-<a href="http://universitas.no/nyhet/52776/">Universitas</a>,
-<a href="http://www.dagensit.no/trender/article1588462.ece">Dagens-IT</a>
-og <a href="http://www.idg.no/computerworld/article118622.ece">Computerworld
-Norge</a> en sak om at de ansatte ved Universitetet i Oslo ikke følger
-regjeringens pålegg om å publisere i HTML, PDF eller ODF. Det er bra
-at det kommer litt fokus på dette, og jeg håper noen journalister tar
-en titt på de andre statlige instansene også.</p>
-
-<p>Skulle ønske det var en enkel måte å sjekke om ODF-dokumenter er i
-henholdt til ODF-spesifikasjonen, og en måte å teste om programmer som
-hevder å støtte ODF forstår alle delene av ODF-spesifikasjonen.
-Kjenner kun til ufullstendige løsninger for slikt.</p>
-</description>
- </item>
-
- <item>
- <title>Det vanskelige Lisensvalget - ikke lag din egen</title>
- <link>Det_vanskelige_Lisensvalget___ikke_lag_din_egen.html</link>
- <guid isPermaLink="true">Det_vanskelige_Lisensvalget___ikke_lag_din_egen.html</guid>
- <pubDate>Thu, 22 Jan 2009 22:15:00 +0100</pubDate>
- <description>
-<p>Min mormor har intet dypt forhold til opphavsrettsloven. Hun eier
-ingen kopimaskin eller datamaskin. Hun kan ikke bruke videoopptaker,
-og er generelt sjelden i en situasjon der hun kunne tenkes å kopiere
-noe som er opphavsrettslig vernet. Da jeg en gang forklarte at jeg
-var involvert i
-<a href="http://www.openstreetmap.org/">OpenStreetmap-prosjektet</a>
-(hun lurte på hvorfor jeg kjørte rundt i nabolaget med GPS), var
-"hvorfor ikke bruke de offisielle kartene fra kartverket " det første
-hun spurte om. Jeg er usikker på om svaret ga mening, i og med at
-hun aldri har tenkt nøye over bruksrettigheter og slikt. Hva skulle
-hun med retten til videredistribusjon av nye kartkopier, som ikke
-kopierer kart? Hva skulle hun med retten til å publisere endrede
-utgaver som aldri har hatt behov for annet enn å notere litt på en
-kartkopi? Det er altså mulig å gå igjennom livet (og det har vært
-et langt og innholdsrikt liv for min mormor) uten å forholde seg til
-opphavsrettsloven.</p>
-
-<p>Andre igjen trenger solid kunnskap om konsekvensene av paragrafene
-i opphavsrettsloven i sitt daglige virke, men har av ulike årsaker
-ikke satt seg nøye inn i lovens konsekvens. Denne teksten er tiltenkt
-slike lesere.</p>
-
-<p>Når en publiserer programvare eller annet opphavsrettsbeskyttet
-materiale (eller "verk" som loven kaller det), så er det endel ting
-som er lurt å tenke på. Hvis en ikke sier noe spesifikt om vilkårene
-for publiseringen, så er det opphavsrettens grunnregler som gjelder.
-De sier blant annet at ingen andre enn rettighetshaver kan publisere,
-kopiere og endre verket. Hvis en ønsker å publisere noe uten
-bruksbegrensninger for mottaker (f.eks. fri programvare eller fritt
-tilgjengelige data), så må en altså eksplisitt gi tillatelse for andre
-til å gjøre disse tingene. Slike eksplisitte tillatelser kalles
-gjerne lisenser. Det er en god del å tenke på når en lager lisenser,
-og det er enkelt å gjøre feil, slik at lisensen ikke uttrykker
-intensjonen med publiseringen. Det er derfor lurt å gjenbruke en
-eksisterende lisenstekst hvis det er mulig.</p>
-
-<p>Av flere årsaker er det lurt å ikke finne på sin egen lisenstekst.
-For det første gir det jobb for de som ønsker å bruke verket å sette
-seg inn i, forstå og vurdere hver enkelt lisens, for å finne ut om den
-dekker bruksbehovet. Hver ny lisensvariant gir dermed ekstra arbeide
-for de organisasjoner og individer som vurderer å ta i bruk et
-opphavsrettsbeskyttet verk. Gjenbruk forutsetter gjerne bruk sammen
-med andre verk, f.eks. programmer og biblioteker skal settes sammen
-til et hele, eller datafiler skal brukes sammen med programmer. Det
-er fort gjort å lage en hjemmesnekret lisens som ikke tillater bruk
-sammen med andre komponenter hvis en ikke er påpasselig med
-utformingen av lisensen (såkalte inkompatible lisenser), spesielt hvis
-det ikke er intensjonen ved publisering. Og for det andre, så er det
-fort gjort å glemme noe når en lager lisensteksten, slik at
-rettigheter en ønsket å gi til brukerne ikke blir nevnt og lovens
-begresninger gjelder.. <strong>Første regel ved lisensvalg er derfor
-å unngå å lage sin egen, men forsøke så langt som mulig å bruke en av
-de utallige eksisterende lisensene.</strong></p>
-
-<p>Et lite eksempel på problemer som kan oppstå er
-<a href="http://api.met.no/lisens.html">betingelsene som Meteorologisk
-institutt har gjort sine data tilgjengelig under</a>. De ser pr. i
-dag slik ut (kopiert hit for å sikre at framtidige lesere kjenner
-innholdet hvis de endres):</p>
-
-<blockquote><p>Betingelser for bruk av data
-<br/>Meteorologisk institutt innehar immaterielle- og
-eiendomsrettigheter til data og produkter produsert av instituttet
-(heretter omtalt som PRODUKTER/PRODUKTENE). Selv om et utvalg
-PRODUKTER er tilgjengelige her for nedlasting og bruk, medfører ikke
-dette på noen måte overdragelse av disse rettighetene. PRODUKTENE kan
-brukes til ethvert formål som ikke er i strid med norsk lov. Dersom
-PRODUKTENE videreformidles i opprinnelig form eller i en form hvor de
-opprinnelige PRODUKTENE utgjør en vesentlig og/eller en lett
-gjenkjennelig del, skal Meteorologisk institutt oppgies som
-kilde. Dette må gjøres på en godt synlig måte. Meteorologisk institutt
-kan ikke holdes ansvarlig for eventuelle konsekvenser av bruken av
-PRODUKTENE. Meteorologisk institutt garanterer ikke regelmessighet i
-oppdateringen av PRODUKTENE, og endringer i PRODUKTENE kan forekomme
-uten varsel. For direkte leveranse av spesifisert produktsett,
-vennligst kontakt Meteorologisk institutt.</p></blockquote>
-
-<p>Meteorologisk institutt hevder at dette skal gjøre dem "fritt
-tilgjengelige", og det gjør at jeg mistenker at betingelsene ikke
-reflekterer intensjonen bak publiseringen. I lisensen står det ikke
-at en har rett til å endre dataene og publisere det endrede
-resultatet. Det står heller ingenting om hvorvidt en har rett til
-videredistribusjon. Mangelen på tillatelse til slik bruk gjør at jeg
-ikke ville omtale datagrunnlaget som fritt tilgjengelig. Det er i
-strid med kriteriene for Free Software
-<a href="http://www.fsf.org/licensing/essays/free-sw.html">publisert
-av FSF</a>,
-<a href="http://www.debian.org/social_contract#guidelines">Debian Free
-Software Guidelines</a> og NUUGs beskrivelse av fri programvare
-publisert i
-<a href="http://www.nuug.no/dokumenter/folder-friprogramvare.pdf">NUUGs
-folder om dette</a>. Jeg lurer på hvorfor Meteorologisk institutt
-ikke valgte noen kjent lisens? Skulle tro at en Creative
-Commons-lisens eller en av de mest brukte fri programvarelisensene som
-GPL og BSD kunne duge. Jeg håper Meteorologisk institutt revurderer
-og endrer på betingelsene.</p>
-</description>
- </item>
-
</channel>
</rss>