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.
- -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:
- -
-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&cs=nodhs1&l=no&s=dhs&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/<[^>]+?>/;/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/<[^>]+?>/;/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 && $serial) {
- my $content =
- get("http://www-947.ibm.com/systems/support/supportsite.wss/warranty?action=warranty&brandind=5000008&Submit=Submit&type=$producttype&serial=$serial");
- if ($content) {
- $content =~ s/<[^>]+?>/;/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;
-}
-
-
-Here are some examples on how to use the function, using fake -serial numbers. The information passed in as arguments are fetched -from dmidecode.
- -
-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");
-
-
-I would recommend this approach for tracking support contracts for -everyone with more than a new computers to administer. :)
+Min hovedbankforbindelse, +Postbanken, har fra 1. oktober +blokkert tilgangen min til nettbanken hvis jeg ikke godtar vilkårene +for BankID og går over til å +bruke BankID for tilgangskontroll. Tidligere kunne jeg bruke en +kodekalkulator som ga tilgang til nettbanken, men nå er dette ikke +lenger mulig. Jeg blokkeres ute fra nettbanken og mine egne penger +hvis jeg ikke godtar det jeg anser som urimelige vilkår i +BankID-avtalen.
+ +BankID er en løsning der banken gis rett til å handle på vegne av +meg, med avtalemessig forutsetning at jeg i hvert enkelt tilfelle har +bedt banken gjøre dette. BankID kan brukes til å signere avtaler, +oppta lån og andre handlinger som har alvorlige følger for meg. +Problemet slik jeg ser det er at BankID er lagt opp slik at banken har +all informasjon og tilgang som den trenger for å bruke BankID, også +uten at jeg er involvert. Avtalemessing og juridisk skal de kun bruke +min BankID når jeg har oppgitt pinkode og passord, men praktisk og +konkret kan de gjøre dette også uten at min pinkode eller mitt passord +er oppgitt, da de allerede har min pinkode og passord tilgjengelig hos +seg for å kunne sjekke at riktig pinkode og passord er oppgitt av meg +(eller kan skaffe seg det ved behov). Jeg ønsker ikke å gi banken +rett til å inngå avtaler på vegne av meg.
+ +Rent teknisk er BankID et offentlig nøkkelpar, en privat og en +offentlig nøkkel, der den private nøkkelen er nødvendig for å +"signere" på vegne av den nøkkelen gjelder for, og den offentlige +nøkkelen er nødvendig for å sjekke hvem som har signert. Banken +sitter på både den private og den offentlige nøkkelen, og sier de kun +skal bruke den private hvis kunden ber dem om det og oppgir pinkode og +passord.
+ + +I postbankens +vilkår +for BankID står følgende:
+ +++ +"6. Anvendelsesområdet for BankID
+ +PersonBankID kan benyttes fra en datamaskin, eller etter nærmere + avtale fra en mobiltelefon/SIM-kort, for pålogging i nettbank og til + identifisering og signering i forbindelse med elektronisk + meldingsforsendelse, avtaleinngåelse og annen form for nettbasert + elektronisk kommunikasjon med Banken og andre brukersteder som har + tilrettelagt for bruk av BankID. Dette forutsetter at brukerstedet + har inngått avtale med bank om bruk av BankID."
+
Det er spesielt retten til "avtaleinngåelse" jeg synes er urimelig +å kreve for at jeg skal få tilgang til mine penger via nettbanken, men +også retten til å kommunsere på vegne av meg med andre brukersteder og +signering av meldigner synes jeg er problematisk. Jeg må godta at +banken skal kunne signere for meg på avtaler og annen kommunikasjon +for å få BankID.
+ +På spørsmål om hvordan jeg kan få tilgang til nettbank uten å gi +banken rett til å inngå avtaler på vegne av meg svarer Postbankens +kundestøtte at "Postbanken har valgt BankID for bl.a. pålogging i +nettbank , så her må du nok ha hele denne løsningen". Jeg nektes +altså tilgang til nettbanken inntil jeg godtar at Postbanken kan +signere avtaler på vegne av meg.
+ +Postbankens kundesupport sier videre at "Det har blitt et krav til +alle norske banker om å innføre BankID, bl.a på grunn av sikkerhet", +uten at jeg her helt sikker på hvem som har framsatt dette kravet. +Det som er situasjonen er dog at det er svært få banker igjen som ikke +bruker BankID, og jeg vet ikke hvilken bank som er et godt alternativ +for meg som ikke vil gi banken rett til å signere avtaler på mine +vegne.
+ +Jeg ønsker mulighet til å reservere meg mot at min BankID brukes +til annet enn å identifisere meg overfor nettbanken før jeg vil ta i +bruk BankID. Ved nettbankbruk er det begrenset hvor store skader som +kan oppstå ved misbruk, mens avtaleinngåelse ikke har tilsvarende +begrensing.
+ +Jeg har klaget vilkårene inn for forbrukerombudet, men +regner ikke med at de vil kunne bidra til en rask løsning som gir meg +nettbankkontroll over egne midler. :(