Petter Reinholdtsen

Automatically upgrading server firmware on Dell PowerEdge
21st November 2011

At work we have heaps of servers. I believe the total count is around 1000 at the moment. To be able to get help from the vendors when something go wrong, we want to keep the firmware on the servers up to date. If the firmware isn't the latest and greatest, the vendors typically refuse to start debugging any problems until the firmware is upgraded. So before every reboot, we want to upgrade the firmware, and we would really like everyone handling servers at the university to do this themselves when they plan to reboot a machine. For that to happen we at the unix server admin group need to provide the tools to do so.

To make firmware upgrading easier, I am working on a script to fetch and install the latest firmware for the servers we got. Most of our hardware are from Dell and HP, so I have focused on these servers so far. This blog post is about the Dell part.

On the Dell FTP site I was lucky enough to find an XML file with firmware information for all 11th generation servers, listing which firmware should be used on a given model and where on the FTP site I can find it. Using a simple perl XML parser I can then download the shell scripts Dell provides to do firmware upgrades from within Linux and reboot when all the firmware is primed and ready to be activated on the first reboot.

This is the Dell related fragment of the perl code I am working on. Are there anyone working on similar tools for firmware upgrading all servers at a site? Please get in touch and lets share resources.

#!/usr/bin/perl
use strict;
use warnings;
use File::Temp qw(tempdir);
BEGIN {
    # Install needed RHEL packages if missing
    my %rhelmodules = (
        'XML::Simple' => 'perl-XML-Simple',
        );
    for my $module (keys %rhelmodules) {
        eval "use $module;";
        if ($@) {
            my $pkg = $rhelmodules{$module};
            system("yum install -y $pkg");
            eval "use $module;";
        }
    }
}
my $errorsto = 'pere@hungry.com';

upgrade_dell();

exit 0;

sub run_firmware_script {
    my ($opts, $script) = @_;
    unless ($script) {
        print STDERR "fail: missing script name\n";
        exit 1
    }
    print STDERR "Running $script\n\n";

    if (0 == system("sh $script $opts")) { # FIXME correct exit code handling
        print STDERR "success: firmware script ran succcessfully\n";
    } else {
        print STDERR "fail: firmware script returned error\n";
    }
}

sub run_firmware_scripts {
    my ($opts, @dirs) = @_;
    # Run firmware packages
    for my $dir (@dirs) {
        print STDERR "info: Running scripts in $dir\n";
        opendir(my $dh, $dir) or die "Unable to open directory $dir: $!";
        while (my $s = readdir $dh) {
            next if $s =~ m/^\.\.?/;
            run_firmware_script($opts, "$dir/$s");
        }
        closedir $dh;
    }
}

sub download {
    my $url = shift;
    print STDERR "info: Downloading $url\n";
    system("wget --quiet \"$url\"");
}

sub upgrade_dell {
    my @dirs;
    my $product = `dmidecode -s system-product-name`;
    chomp $product;

    if ($product =~ m/PowerEdge/) {

        # on RHEL, these pacakges are needed by the firwmare upgrade scripts
        system('yum install -y compat-libstdc++-33.i686 libstdc++.i686 libxml2.i686 procmail');

        my $tmpdir = tempdir(
            CLEANUP => 1
            );
        chdir($tmpdir);
        fetch_dell_fw('catalog/Catalog.xml.gz');
        system('gunzip Catalog.xml.gz');
        my @paths = fetch_dell_fw_list('Catalog.xml');
        # -q is quiet, disabling interactivity and reducing console output
        my $fwopts = "-q";
        if (@paths) {
            for my $url (@paths) {
                fetch_dell_fw($url);
            }
            run_firmware_scripts($fwopts, $tmpdir);
        } else {
            print STDERR "error: Unsupported Dell model '$product'.\n";
            print STDERR "error: Please report to $errorsto.\n";
        }
        chdir('/');
    } else {
        print STDERR "error: Unsupported Dell model '$product'.\n";
        print STDERR "error: Please report to $errorsto.\n";
    }
}

sub fetch_dell_fw {
    my $path = shift;
    my $url = "ftp://ftp.us.dell.com/$path";
    download($url);
}

# Using ftp://ftp.us.dell.com/catalog/Catalog.xml.gz, figure out which
# firmware packages to download from Dell.  Only work for Linux
# machines and 11th generation Dell servers.
sub fetch_dell_fw_list {
    my $filename = shift;

    my $product = `dmidecode -s system-product-name`;
    chomp $product;
    my ($mybrand, $mymodel) = split(/\s+/, $product);

    print STDERR "Finding firmware bundles for $mybrand $mymodel\n";

    my $xml = XMLin($filename);
    my @paths;
    for my $bundle (@{$xml->{SoftwareBundle}}) {
        my $brand = $bundle->{TargetSystems}->{Brand}->{Display}->{content};
        my $model = $bundle->{TargetSystems}->{Brand}->{Model}->{Display}->{content};
        my $oscode;
        if ("ARRAY" eq ref $bundle->{TargetOSes}->{OperatingSystem}) {
            $oscode = $bundle->{TargetOSes}->{OperatingSystem}[0]->{osCode};
        } else {
            $oscode = $bundle->{TargetOSes}->{OperatingSystem}->{osCode};
        }
        if ($mybrand eq $brand && $mymodel eq $model && "LIN" eq $oscode)
        {
            @paths = map { $_->{path} } @{$bundle->{Contents}->{Package}};
        }
    }
    for my $component (@{$xml->{SoftwareComponent}}) {
        my $componenttype = $component->{ComponentType}->{value};

        # Drop application packages, only firmware and BIOS
        next if 'APAC' eq $componenttype;

        my $cpath = $component->{path};
        for my $path (@paths) {
            if ($cpath =~ m%/$path$%) {
                push(@paths, $cpath);
            }
        }
    }
    return @paths;
}

The code is only tested on RedHat Enterprise Linux, but I suspect it could work on other platforms with some tweaking. Anyone know a index like Catalog.xml is available from HP for HP servers? At the moment I maintain a similar list manually and it is quickly getting outdated.

Tags: debian, english.
Støtt Digitalt Personvern!
9th November 2011

Datalagringsdirektivet er et grotesk angrep på rettsstaten og da det ble vedtatt i Stortinget ble det klart at alle som mener det liberale demokrati bør forsvares måtte stå sammen for å kjempe tilbake de totalitære strømninger i landet. Jeg ble derfor glad over å se at den nyopprettede foreningen Digitalt Personvern startet innsamling 2011-10-18 for å gå til sak for å få prøvd lovligheten av direktivet. Direktivet er så langt prøvd for retten i flere land, blant annet Tsjekkia, Romania og Tyskland, og så vidt jeg vet har det hver gang blitt kjent ulovlig av høyesterett eller forfatningsdomstolen i landene. Jeg håper og tror det samme vil skje her i Norge.

Men for å finne ut av det må det finansiering til. Foreningen Digitalt Personvern tror det trengs minst 2 millioner kroner for å gå til sak og følge saken helt til ende, og i går fikk jeg endelig tid til å overføre min skjerv. Jeg har overført 3000,- til kampanjen, og oppfordrer hver og en av mine lesere å overføre minst like mye.

Besøk donasjonssiden til Digitalt Personvern for å finne kontonummer som kan brukes for å bidra.

Jeg rekker ikke skrive så mye om hvorfor datalagringsdirektivet må stoppes, så jeg nøyer meg denne gangen med en liten liste med lenker til aktuelle artikler og innlegg om temaet.

Tags: norsk, personvern.
Hvordan enkelt laste ned filmer fra NRK
5th November 2011

Ofte har jeg lyst til å laste ned et innslag fra NRKs nettsted for å se det senere når jeg ikke er på nett, eller for å ha det tilgjengelig når jeg en gang i fremtiden ønsker å referere til innslaget selv om NRK har fjernet det fra sine nettsider. I dag fant jeg et lite script som fikser jobben.

Scriptet er laget av Jan Henning Thorsen og tilgjengelig fra github, og gjør det veldig enkelt å laste ned. Kjør nrk-downloader.sh http://www1.nrk.no/nett-tv/klipp/582810 for å hente ned et enkelt innslag eller nrk-downloader.sh http://www1.nrk.no/nett-tv/kategori/3521 for å laste ned alle episodene i en serie.

Det er ikke rakettforskning å laste ned NRK-"strømmer", og tidligere gjorde jeg dette manuelt med mplayer. Scriptet til Hr. Thorsen gjør det raskere og enklere for meg, men jeg vil ikke si at det er en revolusjonerende løsning. Jeg mener jo fortsatt at påstanden fra NRKs ansatte om at det er vesensforskjellig å legge tilgjengelig for nedlasting og for streaming er meningsløs.

Tags: multimedia, norsk, video, web.
40 kommuner lenker nå til FiksGataMi fra sine nettsider - gjør din?
28th October 2011

Siden lansering av NUUGs tjeneste FiksGataMi, en tjeneste for å gjøre det enkelt for innbyggerne og rapportere og holde rede på status for rapporter om problemer med offentlig infrastruktur, har tusenvis av innbyggere bidratt med meldinger. Og spesielt gledelig er det at det at de fleste i offentlige selv ser verdien av tjenesten. For noen dager siden oppdaget jeg nok en kommune som hadde lagt inn lenke til FiksGataMi fra forsiden sine nettsider, og slik omfavnet tjenesten som sin egen. Det er dermed 40 kommuner som lenker til FiksGataMi, og det utgjør nesten 10 prosent av kommunene i Norge. :)

Det gjelder så langt Askøy kommune, Audnedal kommune, Aure kommune, Bærum kommune, Farsund kommune, Flekkefjord kommune, Folldal kommune, Grue kommune, Hadsel kommune, Hamar, Hægebostad kommune, Kongsberg kommune, Kristiansund kommune, Kvinesdal kommune, Kviteseid kommune, Levanger kommune, Lindesnes kommune, Lyngdal kommune, Lørenskog kommune, Løten kommune, Mandal kommune, Marnardal kommune, Moss kommune, Namsos kommune, Nissedal kommune, Sirdal kommune, Spydeberg kommune, Stjørdal kommune, Stord kommune, Søgne kommune, Sør-Odal kommune, Tolga kommune, Tynset kommune, Tysvær kommune, Ullensvang Herad, Vennesla kommune, Verdal kommune, Vågan kommune, Vågå kommune og Åseral kommune. Hvis din kommune ikke er på listen, hva med å sende dem en epost og foreslå at de også lenker til FiksGataMi?

Her er et generalisert eksempel til meldingen kan sende til sin kommune basert på en epost utvikleren Ørjan Vøllestad sendte til sin kommune og som fikk kommunen til å lenke til FiksGataMi:

Subject: Gjøre FiksGataMi tilgjengelig fra kommune websiden
To: kontakt@min.kommune.no

Hei,

Jeg bor i Min kommune og lurte på om Min kommune kunne lagt en link
til FiksGataMi på forsiden, lett tilgjengelig slik andre kommuner har
gjort. Se eksempler under på hvordan det er gjort tilgjengelig og en
liste over kommuner som har tilgjengeliggjort fiksgatami.no fra
kommune-siden.

Hvis det ikke er ønskelig, ønsker jeg en tilbakemelding på hvorfor
ikke. Jeg liker fiksgatami og synes tjenesten er super og gjør det
lettere for kommuner å følge opp innmeldte saker fra innbyggerne.

Se http://wiki.nuug.no/grupper/fiksgatami/tips for spørsmål og svar mellom
andre kommuner og fiksgatami.
Se hovedsiden for tjenesten, http://www.fiksgatami.no/
De har allerede en Android applikasjon som kan promoteres,
https://market.android.com/details?id=no.fiksgatami

F.eks. Mandal har lenke til FiksGataMi på alle sine sider under
overskriften "Min side / Selvbetjening".

Mange andre kommuner har også omfavnet FiksGataMi, og lenket inn til
tjenesten fra sine sider. Det gjelder så langt:

   1. Askøy kommune, https://www.askoy.kommune.no/
   2. Audnedal kommune, http://www.audnedal.kommune.no/
   3. Aure kommune, http://www.aure.kommune.no/
   4. Bærum kommune, https://www.baerum.kommune.no/
   5. Farsund kommune, http://www.farsund.kommune.no/
   6. Flekkefjord kommune, http://www.flekkefjord.kommune.no/
   7. Folldal kommune, http://folldal.kommune.no/
   8. Grue kommune, http://www.grue.kommune.no/
   9. Hadsel kommune, http://www.hadsel.kommune.no/
  10. Hamar, http://www.hamar.kommune.no/category.php?categoryID=1198
  11. Hægebostad kommune, http://www.haegebostad.kommune.no/
  12. Kongsberg kommune, http://www.kongsberg.kommune.no/
  13. Kristiansund kommune, http://www.kristiansund.kommune.no/
  14. Kvinesdal kommune, http://www.kvinesdal.kommune.no/
  15. Kviteseid kommune, http://www.kviteseid.kommune.no/
  16. Levanger kommune, http://www.levanger.kommune.no/
  17. Lindesnes kommune, http://www.lindesnes.kommune.no/
  18. Lyngdal kommune, http://www.lyngdal.kommune.no/
  19. Lørenskog kommune, http://www.lorenskog.kommune.no/
  20. Løten kommune, http://www.loten.kommune.no/
  21. Mandal kommune, http://www.mandal.kommune.no/
  22. Marnardal kommune, http://www.marnardal.kommune.no/
  23. Moss kommune, http://www.moss.kommune.no/
  24. Namsos kommune, http://www.namsos.kommune.no/
  25. Nissedal kommune,
      http://www.nissedal.kommune.no/Tenester/Lokalt/Trygge%20Nissedal.aspx
  26. Sirdal kommune, http://sirdal.kommune.be/
  27. Spydeberg kommune, http://www.spydeberg.kommune.no/
  28. Stjørdal kommune, https://www.stjordal.kommune.no/
  29. Stord kommune, http://www.stord.kommune.no/
  30. Søgne kommune, http://www.sogne.kommune.no/
  31. Sør-Odal kommune, http://www.sor-odal.kommune.no/
  32. Tolga kommune, http://tolga.kommune.no/
  33. Tynset kommune, http://www.tynset.kommune.no/
  34. Tysvær kommune, http://www.tysver.kommune.no/
  35. Ullensvang Herad,
      http://www.ullensvang.herad.no/index.php?option=com_content&view=article&id=184:fiksgatami&catid=1:naering-og-utvikling&Itemid=174
  36. Vennesla kommune, http://www.vennesla.kommune.no/
  37. Verdal kommune, http://www.verdal.kommune.no/
  38. Vågan kommune, http://www.vagan.kommune.no/
  39. Vågå kommune, http://www.vaga.kommune.no/
  40. Åseral kommune, http://www.aseral.kommune.no/

Ellers kan jeg melde at FiksGataMi har fått støtte for å rapportere inn via Open311-grensesnittet i tillegg til å bruke epost. Det betyr at hvis det offentlige implementerer Open311-grensesnitt på sin interne database for å håndtere henvendelser, så kan FiksGataMi-rapporterer sendes direkte dit uten å gå via epost. Det kan spare litt arbeidstid hos kommuner, fylker og vegvesen. Støtten er utviklet av mySociety i England og allerede i bruk der. Vi håper en norsk etat melder sin interesse for å bruke Open311 og dermed slippe å håndtere meldingene som epost.

Tags: fiksgatami, norsk.
Free e-book kiosk for the public libraries?
7th October 2011

Here in Norway the public libraries are debating with the publishing houses how to handle electronic books. Surprisingly, the libraries seem to be willing to accept digital restriction mechanisms (DRM) on books and renting e-books with artificial scarcity from the publishing houses. Time limited renting (2-3 years) is one proposed model, and only allowing X borrowers for each book is another. Personally I find it amazing that libraries are even considering such models.

Anyway, while reading part of this debate, it occurred to me that someone should present a more sensible approach to the libraries, to allow its borrowers to get used to a better model. The idea is simple:

Create a computer system for the libraries, either in the form of a Live DVD or a installable distribution, that provide a simple kiosk solution to hand out free e-books. As a start, the books distributed by Project Gutenberg (abount 36,000 books), Project Runenberg (1149 books) and The Internet Archive (3,033,748 books) could be included, but any book where the copyright has expired or with a free licence could be distributed.

The computer system would make it easy to:

In addition to such kiosk solution, there should probably be a web site as well to allow people easy access to these books without visiting the library. The site would be the distribution point for the kiosk systems, which would connect regularly to fetch any new books available.

Are there anyone working on a system like this? I guess it would fit any library in the world, and not just the Norwegian public libraries. :)

Tags: english, opphavsrett.
Ripping problematic DVDs using dvdbackup and genisoimage
17th September 2011

For convenience, I want to store copies of all my DVDs on my file server. It allow me to save shelf space flat while still having my movie collection easily available. It also make it possible to let the kids see their favourite DVDs without wearing the physical copies down. I prefer to store the DVDs as ISOs to keep the DVD menu and subtitle options intact. It also ensure that the entire film is one file on the disk. As this is for personal use, the ripping is perfectly legal here in Norway.

Normally I rip the DVDs using dd like this:

#!/bin/sh
# apt-get install lsdvd
title=$(lsdvd 2>/dev/null|awk '/Disc Title: / {print $3}')
dd if=/dev/dvd of=/storage/dvds/$title.iso bs=1M

But some DVDs give a input/output error when I read it, and I have been looking for a better alternative. I have no idea why this I/O error occur, but suspect my DVD drive, the Linux kernel driver or something fishy with the DVDs in question. Or perhaps all three.

Anyway, I believe I found a solution today using dvdbackup and genisoimage. This script gave me a working ISO for a problematic movie by first extracting the DVD file system and then re-packing it back as an ISO.

#!/bin/sh
# apt-get install lsdvd dvdbackup genisoimage
set -e
tmpdir=/storage/dvds/
title=$(lsdvd 2>/dev/null|awk '/Disc Title: / {print $3}')
dvdbackup -i /dev/dvd -M -o $tmpdir -n$title
genisoimage -dvd-video -o $tmpdir/$title.iso $tmpdir/$title
rm -rf $tmpdir/$title

Anyone know of a better way available in Debian/Squeeze?

Update 2011-09-18: I got a tip from Konstantin Khomoutov about the readom program from the wodim package. It is specially written to read optical media, and is called like this: readom dev=/dev/dvd f=image.iso. It got 6 GB along with the problematic Cars DVD before it failed, and failed right away with a Timmy Time DVD.

Next, I got a tip from Bastian Blank about his program python-dvdvideo, which seem to be just what I am looking for. Tested it with my problematic Timmy Time DVD, and it succeeded creating a ISO image. The git source built and installed just fine in Squeeze, so I guess this will be my tool of choice in the future.

Tags: english, opphavsrett, video.
Kommunevalget må visst kontrollregnes på
14th September 2011

En artikkel i aftenbladet påstår at valgsystemet til EDB Ergogroup ikke regner riktig mandatfordeling i Stavanger. Det høres for meg ut som om innbyggerne i Norge er nødt til å kontrollregne på mandatfordelingen for å sikre at valget går riktig for seg. Det tar jeg som nok et argument for nøyere kontroll av det norske valgsystemet.

Tags: norsk, valg.
Noen problemer rundt unikt nummererte stemmesedler i norske valg
13th September 2011

I digi.no forklarer Ergo Group at gårdagens problemer med opptelling av stemmesedler ved kommunevalget var at noen stemmesedler ikke hadde unike løpenummer, og at programvaren som ble brukt til telling ikke var laget for å håndtere dette. Jeg ble svært overrasket over å lese at norske stemmesedler har unike løpenummer, da min forståelse er at det går på bekostning av kravet om hemmelige valg.

Jeg har ikke god oversikt over hvilke problemer dette kan skape for hemmelig valg, men her er noen scenarier som virker problematiske for meg:

(1) Jomar og Bertil avtaler at Bertil skal stemme på Lurepartiet med stemmeseddelen som Bertil får utlevert fra Jomar, og belønnes for dette. Stemmeseddelen har et unikt løpenummer, og ved opptellingen sjekker Jomar at stemmeseddelen til Lurepartiet det unike løpenummeret er med i stemmesedlene som ble talt opp før Bertil får sin belønning. Unike løpenummer legger så vidt jeg kan forstå opp til kjøp og salg av stemmer.

(2) Jomar har også jobb som valgobservatør, og har gått igjennom avlukkene og notert parti og løpenummer for alle stemmesedlene i avlukkene. Har er i tillegg jevnlig innom og sjekker hvilke løpenummer som er igjen i avlukkene (lar seg ganske raskt og enkelt gjøre med en mobiltelefon med kamera som kan ta bilder av alle løpenumrene). Når en person han vil vite hva stemmer kommer innom, sammenligner han stemmesedler i avlukkene før og etter at vedkommende har vært innom, og sjekker så om løpenummeret som var på stemmeseddel (eller sedlene) som forsvant fra avlukket dukker opp under opptellingen. Det kan på den måten være mulig å finne ut hva en person stemte. Hvis personen tar med seg en stemmeseddel fra alle partiene vil det fortsatt være mulig å finne ut hvilken av disse som ble talt opp, slik at en ikke kan beskytte seg på det viset.

Jeg er ikke sikker på hvor realistiske disse scenariene er i dag, dvs. hvilke andre prosedyrer som finnes i det norske valget for å hindre dette.

Det er dog ingen tvil om at det er lurt å nummerere stemmesedler ved opptelling for å sikre at ingen forsvinner i prosessen med å telle opp stemmer, men det må gjøres når stemmeurnene åpnes og ikke før innbyggerne avgir sin stemme.

Under Go Open 2009 presenterte Mitch Trachtenberg fra Humboldt County, California hvordan de laget et system som kontrolltalte stemmene der ved hjelp av en scanner med arkmater og fri programvare. Der ble stemmesedlene unikt nummerert før scanning, og det er laget en CD med bilder av alle stemmesedler slik at enhver kan kontrolltelle stemmene selv hvis de ønsker det. Kanskje en ide også for Norge? Programvaren er så vidt jeg vet fri programvare, og tilgjengelig fra hans nettsted

Tags: norsk, personvern, valg.
Mer løgnpropaganda fra BSA
9th September 2011

I år igjen er Microsoft-politiet BSA ute med løgnpropagandaen sin. Hvert år de siste årene har BSA, lobbyfronten til de store programvareselskapene som Microsoft og Apple, publisert en rapport der de gjetter på hvor mye piratkopiering påfører i tapte inntekter i ulike land rundt om i verden. Resultatene er alltid tendensiøse. Den siste rapporten er tilgjengelig fra deres nettsted.

Den har fått endel dekning av journalister som åpenbart ikke har tenkt på å stille kritiske spørsmål om resultatene. Se f.eks. digi.no, hardware.no og aftenposten.no.

BSA-undersøkelsene er søppel som inneholder oppblåste tall, og har gjentatte ganger blitt tatt for dette. Her er noen interessante referanser med bakgrunnsinformasjon.

Personlig skulle jeg ønske BSA var enda mer ivrig og mer hardhendt i å håndheve de ikke-frie programvarelisensene (og de er ganske ivrige allerede), slik at brukerne av disse forsto vilkårene bedre. Jeg tror nemlig ingen som forstår vilkårene vil akseptere dem og at det vil føre til at flere tar i bruk fri programvare.

Tags: bsa, fildeling, norsk, opphavsrett, personvern.
Flytting er et tidssluk
23rd August 2011

I sommer kom plutselig en veldig fint hus til salgs i Nydalen, så vi ble brått eier av et hus og skal selge vår leilighet i Nydalen Allé (visning 2011-08-28), pakke for flytting, fotografering og visning, og generelt omstrukturere alt vi holder på med i noen måneder. Det har pågått siden i sommer, og er for øyeblikket forklaringen om hvorfor jeg er så lite aktiv med blogging, fri programvareutvikling, NUUG-foreningsarbeide og annet. Jeg håper det blir bedre etter flytting i oktober.

Tags: norsk.

RSS feed

Created by Chronicle v4.4