X-Git-Url: http://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/ea53e2c69a9a6988da71b44f788df538332dfd19..83f5e530a72887d485c647593c24dea454690a5b:/blog/index.rss diff --git a/blog/index.rss b/blog/index.rss index 960f25a1ca..4dc5fbc390 100644 --- a/blog/index.rss +++ b/blog/index.rss @@ -6,6 +6,207 @@ + + Checking server hardware support status for Dell, HP and IBM servers + Checking_server_hardware_support_status_for_Dell__HP_and_IBM_servers.html + 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 =~ 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> + + + + + 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: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 +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> + + + Kart over overvåkningskamera i Norge Kart_over_overv__kningskamera_i_Norge.html @@ -24,7 +225,7 @@ små og store brødre trenger inn i ens private sfære. Datatilsynet 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 @@ -252,132 +453,5 @@ oppløsning.</p> - - ODF-bruk i staten, ikke helt på plass - ODF_bruk_i_staten__ikke_helt_p___plass.html - ODF_bruk_i_staten__ikke_helt_p___plass.html - Thu, 22 Jan 2009 23:00:00 +0100 - -<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> - - - - - Det vanskelige Lisensvalget - ikke lag din egen - Det_vanskelige_Lisensvalget___ikke_lag_din_egen.html - Det_vanskelige_Lisensvalget___ikke_lag_din_egen.html - Thu, 22 Jan 2009 22:15:00 +0100 - -<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> - - -