1 <?xml version=
"1.0" encoding=
"ISO-8859-1"?>
2 <rss version='
2.0' xmlns:lj='http://www.livejournal.org/rss/lj/
1.0/'
>
4 <title>Petter Reinholdtsen - Entries from November
2011</title>
5 <description>Entries from November
2011</description>
6 <link>http://www.hungry.com/~pere/blog/
</link>
10 <title>Automatically upgrading server firmware on Dell PowerEdge
</title>
11 <link>http://www.hungry.com/~pere/blog/Automatically_upgrading_server_firmware_on_Dell_PowerEdge.html
</link>
12 <guid isPermaLink=
"true">http://www.hungry.com/~pere/blog/Automatically_upgrading_server_firmware_on_Dell_PowerEdge.html
</guid>
13 <pubDate>Mon,
21 Nov
2011 12:
00:
00 +
0100</pubDate>
14 <description><p
>At work we have heaps of servers. I believe the total count is
15 around
1000 at the moment. To be able to get help from the vendors
16 when something go wrong, we want to keep the firmware on the servers
17 up to date. If the firmware isn
't the latest and greatest, the
18 vendors typically refuse to start debugging any problems until the
19 firmware is upgraded. So before every reboot, we want to upgrade the
20 firmware, and we would really like everyone handling servers at the
21 university to do this themselves when they plan to reboot a machine.
22 For that to happen we at the unix server admin group need to provide
23 the tools to do so.
</p
>
25 <p
>To make firmware upgrading easier, I am working on a script to
26 fetch and install the latest firmware for the servers we got. Most of
27 our hardware are from Dell and HP, so I have focused on these servers
28 so far. This blog post is about the Dell part.
</P
>
30 <p
>On the Dell FTP site I was lucky enough to find
31 <a href=
"ftp://ftp.us.dell.com/catalog/Catalog.xml.gz
">an XML file
</a
>
32 with firmware information for all
11th generation servers, listing
33 which firmware should be used on a given model and where on the FTP
34 site I can find it. Using a simple perl XML parser I can then
35 download the shell scripts Dell provides to do firmware upgrades from
36 within Linux and reboot when all the firmware is primed and ready to
37 be activated on the first reboot.
</p
>
39 <p
>This is the Dell related fragment of the perl code I am working on.
40 Are there anyone working on similar tools for firmware upgrading all
41 servers at a site? Please get in touch and lets share resources.
</p
>
47 use File::Temp qw(tempdir);
49 # Install needed RHEL packages if missing
51 'XML::Simple
' =
> 'perl-XML-Simple
',
53 for my $module (keys %rhelmodules) {
54 eval
"use $module;
";
56 my $pkg = $rhelmodules{$module};
57 system(
"yum install -y $pkg
");
58 eval
"use $module;
";
62 my $errorsto =
'pere@hungry.com
';
68 sub run_firmware_script {
69 my ($opts, $script) = @_;
71 print STDERR
"fail: missing script name\n
";
74 print STDERR
"Running $script\n\n
";
76 if (
0 == system(
"sh $script $opts
")) { # FIXME correct exit code handling
77 print STDERR
"success: firmware script ran succcessfully\n
";
79 print STDERR
"fail: firmware script returned error\n
";
83 sub run_firmware_scripts {
84 my ($opts, @dirs) = @_;
85 # Run firmware packages
87 print STDERR
"info: Running scripts in $dir\n
";
88 opendir(my $dh, $dir) or die
"Unable to open directory $dir: $!
";
89 while (my $s = readdir $dh) {
90 next if $s =~ m/^\.\.?/;
91 run_firmware_script($opts,
"$dir/$s
");
99 print STDERR
"info: Downloading $url\n
";
100 system(
"wget --quiet \
"$url\
"");
105 my $product = `dmidecode -s system-product-name`;
108 if ($product =~ m/PowerEdge/) {
110 # on RHEL, these pacakges are needed by the firwmare upgrade scripts
111 system(
'yum install -y compat-libstdc++-
33.i686 libstdc++.i686 libxml2.i686 procmail
');
113 my $tmpdir = tempdir(
117 fetch_dell_fw(
'catalog/Catalog.xml.gz
');
118 system(
'gunzip Catalog.xml.gz
');
119 my @paths = fetch_dell_fw_list(
'Catalog.xml
');
120 # -q is quiet, disabling interactivity and reducing console output
121 my $fwopts =
"-q
";
123 for my $url (@paths) {
126 run_firmware_scripts($fwopts, $tmpdir);
128 print STDERR
"error: Unsupported Dell model
'$product
'.\n
";
129 print STDERR
"error: Please report to $errorsto.\n
";
133 print STDERR
"error: Unsupported Dell model
'$product
'.\n
";
134 print STDERR
"error: Please report to $errorsto.\n
";
140 my $url =
"ftp://ftp.us.dell.com/$path
";
144 # Using ftp://ftp.us.dell.com/catalog/Catalog.xml.gz, figure out which
145 # firmware packages to download from Dell. Only work for Linux
146 # machines and
11th generation Dell servers.
147 sub fetch_dell_fw_list {
148 my $filename = shift;
150 my $product = `dmidecode -s system-product-name`;
152 my ($mybrand, $mymodel) = split(/\s+/, $product);
154 print STDERR
"Finding firmware bundles for $mybrand $mymodel\n
";
156 my $xml = XMLin($filename);
158 for my $bundle (@{$xml-
>{SoftwareBundle}}) {
159 my $brand = $bundle-
>{TargetSystems}-
>{Brand}-
>{Display}-
>{content};
160 my $model = $bundle-
>{TargetSystems}-
>{Brand}-
>{Model}-
>{Display}-
>{content};
162 if (
"ARRAY
" eq ref $bundle-
>{TargetOSes}-
>{OperatingSystem}) {
163 $oscode = $bundle-
>{TargetOSes}-
>{OperatingSystem}[
0]-
>{osCode};
165 $oscode = $bundle-
>{TargetOSes}-
>{OperatingSystem}-
>{osCode};
167 if ($mybrand eq $brand
&& $mymodel eq $model
&& "LIN
" eq $oscode)
169 @paths = map { $_-
>{path} } @{$bundle-
>{Contents}-
>{Package}};
172 for my $component (@{$xml-
>{SoftwareComponent}}) {
173 my $componenttype = $component-
>{ComponentType}-
>{value};
175 # Drop application packages, only firmware and BIOS
176 next if
'APAC
' eq $componenttype;
178 my $cpath = $component-
>{path};
179 for my $path (@paths) {
180 if ($cpath =~ m%/$path$%) {
181 push(@paths, $cpath);
189 <p
>The code is only tested on RedHat Enterprise Linux, but I suspect
190 it could work on other platforms with some tweaking. Anyone know a
191 index like Catalog.xml is available from HP for HP servers? At the
192 moment I maintain a similar list manually and it is quickly getting
198 <title>Støtt Digitalt Personvern!
</title>
199 <link>http://www.hungry.com/~pere/blog/St_tt_Digitalt_Personvern_.html
</link>
200 <guid isPermaLink=
"true">http://www.hungry.com/~pere/blog/St_tt_Digitalt_Personvern_.html
</guid>
201 <pubDate>Wed,
9 Nov
2011 22:
10:
00 +
0100</pubDate>
202 <description><p
>Datalagringsdirektivet er et grotesk angrep på rettsstaten og da
203 det ble vedtatt i Stortinget ble det klart at alle som mener det
204 liberale demokrati bør forsvares måtte stå sammen for å kjempe tilbake
205 de totalitære strømninger i landet. Jeg ble derfor glad over å se at
206 den nyopprettede foreningen Digitalt Personvern startet innsamling
207 2011-
10-
18 for å gå til sak for å få prøvd lovligheten av direktivet.
208 Direktivet er så langt prøvd for retten i flere land, blant annet
209 Tsjekkia, Romania og Tyskland, og så vidt jeg vet har det hver gang
210 blitt kjent ulovlig av høyesterett eller forfatningsdomstolen i
211 landene. Jeg håper og tror det samme vil skje her i Norge.
</p
>
213 <p
>Men for å finne ut av det må det finansiering til. Foreningen
214 Digitalt Personvern tror det trengs minst
2 millioner kroner for å gå
215 til sak og følge saken helt til ende, og i går fikk jeg endelig tid
216 til å overføre min skjerv. Jeg har overført
3000,- til kampanjen, og
217 oppfordrer hver og en av mine lesere å overføre minst like mye.
</p
>
220 <a href=
"http://www.digitaltpersonvern.no/bidra/
">donasjonssiden
</a
>
221 til Digitalt Personvern for å finne kontonummer som kan brukes for å
224 <p
>Jeg rekker ikke skrive så mye om hvorfor datalagringsdirektivet må
225 stoppes, så jeg nøyer meg denne gangen med en liten liste med lenker
226 til aktuelle artikler og innlegg om temaet.
</p
>
230 <li
><a href=
"http://www.uhuru.biz/?p=
662">Skal Telenor forsvare statens
231 bevisregister i retten?
</a
> - bloggen til Jon Wessel-Aas,
232 bidragsyter til foreningen Digitalt Personvern
</li
>
234 <li
><a href=
"http://voxpublica.no/
2011/
10/varslere-bør-støtte-kampanjen-digital-personvern/
">Varslere
235 bør støtte kampanjen Digitalt Personvern
</a
> - Vox Publica
</li
>
237 <li
><a href=
"http://www.digi.no/
880520/georg-apenes-starter-%ABdigitalt-personvern%BB
">Georg
238 Apenes starter «Digitalt personvern»
</a
> - Digi.no
</li
>
240 <li
><a href=
"http://blogg.abrenna.com/foredrag-om-digitalt-personvern/
">Foredrag
241 om Digitalt Personvern
</a
> - bloggen til Anders Brenna, styremedlem
242 i foreningen Digitalt Personvern
</li
>
244 <li
><a href=
"http://www.nationen.no/
2011/
10/
17/politikk/datalagringsdirektivet/eu/eu-direktiv/regjeringen/
6990171/
">Organisasjon
245 vil prøve datalagringsdirektivet for retten
</a
> - artikkel i Nationen
</li
>
247 <li
><a href=
"https://people.skolelinux.org/pere/blog/Martin_Bekkelund__En_stille_b_nn_om_Datalagringsdirektivet.html
">Martin
248 Bekkelund: En stille bønn om Datalagringsdirektivet
</a
> - min
251 <li
><a href=
"http://tversover.wordpress.com/
2011/
10/
21/digitalt-personvern-i-praksis/
">Digitalt
252 personvern i praksis
</a
> - bloggen til Espen Andersen
</li
>
254 <li
><a href=
"http://www.dagbladet.no/
2011/
10/
22/kultur/data_og_teknologi/datalagringsdirektivet/tekno/personvern/
18692696/
">Tar
255 kampen for personvernet til rettsalen
</a
> - Dagbladet
</li
>
262 <title>Hvordan enkelt laste ned filmer fra NRK
</title>
263 <link>http://www.hungry.com/~pere/blog/Hvordan_enkelt_laste_ned_filmer_fra_NRK.html
</link>
264 <guid isPermaLink=
"true">http://www.hungry.com/~pere/blog/Hvordan_enkelt_laste_ned_filmer_fra_NRK.html
</guid>
265 <pubDate>Sat,
5 Nov
2011 15:
20:
00 +
0100</pubDate>
266 <description><p
>Ofte har jeg lyst til å laste ned et innslag fra NRKs nettsted for
267 å se det senere når jeg ikke er på nett, eller for å ha det
268 tilgjengelig når jeg en gang i fremtiden ønsker å referere til
269 innslaget selv om NRK har fjernet det fra sine nettsider. I dag fant
270 jeg et lite script som fikser jobben.
</p
>
272 <p
>Scriptet er laget av Jan Henning Thorsen og tilgjengelig fra
273 <a href=
"http://jhthorsen.github.com/snippets/nrk-downloader/
">github
</a
>,
274 og gjør det veldig enkelt å laste ned. Kjør
<tt
>nrk-downloader.sh
275 http://www1.nrk.no/nett-tv/klipp/
582810</tt
> for å hente ned et enkelt
276 innslag eller
<tt
>nrk-downloader.sh
277 http://www1.nrk.no/nett-tv/kategori/
3521</tt
> for å laste ned alle
278 episodene i en serie.
</p
>
280 <p
>Det er ikke rakettforskning å laste ned NRK-
"strømmer
", og
281 tidligere gjorde jeg dette manuelt med mplayer. Scriptet til
282 Hr. Thorsen gjør det raskere og enklere for meg, men jeg vil ikke si
283 at det er en revolusjonerende løsning. Jeg mener jo fortsatt at
284 påstanden fra NRKs ansatte om at det er
285 <a href=
"https://people.skolelinux.org/pere/blog/Best___ikke_fortelle_noen_at_streaming_er_nedlasting___.html
">vesensforskjellig
286 å legge tilgjengelig for nedlasting og for streaming
</a
> er
287 meningsløs.
</p
>