X-Git-Url: http://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/17663f4b507f9a77277fedb661a53a0bd65f825b..eb0ad84cc9e4987d108fc9bfb26fa7480fee2838:/blog/index.html diff --git a/blog/index.html b/blog/index.html index b2ad72cb9c..50e6eeabb4 100644 --- a/blog/index.html +++ b/blog/index.html @@ -19,6 +19,83 @@ +
+
Returning from Skolelinux developer gathering
+
2009-03-29 21:00
+
+

I'm sitting on the train going home from this weekends Debian +Edu/Skolelinux development gathering. I got a bit done tuning the +desktop, and looked into the dynamic service location protocol +implementation avahi. It look like it could be useful for us. Almost +30 people participated, and I believe it was a great environment to +get to know the Skolelinux system. Walter Bender, involved in the +development of the Sugar educational platform, presented his stuff and +also helped me improve my OLPC installation. He also showed me that +his Turtle Art application can be used in standalone mode, and we +agreed that I would help getting it packaged for Debian. As a +standalone application it would be great for Debian Edu. We also +tried to get the video conferencing working with two OLPCs, but that +proved to be too hard for us. The application seem to need more work +before it is ready for me. I look forward to getting home and relax +now. :)

+
+
+ + + + Tags: debian, debian edu, english, nuug. + +
+
+
+ +
+
Time for new LDAP schemas replacing RFC 2307?
+
2009-03-29 20:30
+
+

The state of standardized LDAP schemas on Linux is far from +optimal. There is RFC 2307 documenting one way to store NIS maps in +LDAP, and a modified version of this normally called RFC 2307bis, with +some modifications to be compatible with Active Directory. The RFC +specification handle the content of a lot of system databases, but do +not handle DNS zones and DHCP configuration.

+ +

In Debian Edu/Skolelinux, +we would like to store information about users, SMB clients/hosts, +filegroups, netgroups (users and hosts), DHCP and DNS configuration, +and LTSP configuration in LDAP. These objects have a lot in common, +but with the current LDAP schemas it is not possible to have one +object per entity. For example, one need to have at least three LDAP +objects for a given computer, one with the SMB related stuff, one with +DNS information and another with DHCP information. The schemas +provided for DNS and DHCP are impossible to combine into one LDAP +object. In addition, it is impossible to implement quick queries for +netgroup membership, because of the way NIS triples are implemented. +It just do not scale. I believe it is time for a few RFC +specifications to cleam up this mess.

+ +

I would like to have one LDAP object representing each computer in +the network, and this object can then keep the SMB (ie host key), DHCP +(mac address/name) and DNS (name/IP address) settings in one place. +It need to be efficently stored to make sure it scale well.

+ +

I would also like to have a quick way to map from a user or +computer and to the net group this user or computer is a member.

+ +

Active Directory have done a better job than unix heads like myself +in this regard, and the unix side need to catch up. Time to start a +new IETF work group?

+
+
+ + + + Tags: debian, debian edu, english, nuug. + +
+
+
+
Hva er egentlig en åpen standard?
2009-03-28 10:50
@@ -445,224 +522,6 @@ i denne sammenhengen.

-
-
Teknisk program for Go Open 2009 er nesten ferdig
-
2009-03-05 22:30
-
-

Etter lang tids jobbing begynner endelig programmet til det -tekniske sporet på konferansen Go Open -2009 å bli ferdig. Det blir 9 punkter på programmet, og etter alt -å dømme blir det disse 9:

- - - -

De siste bekreftelsene og overskrifter mangler og kommer -forhåpentlig på plass før mandag, men jeg håper dette blir et program -flere enn meg vil sette pris på. Jeg gleder meg i hvert fall -stort.

-
-
- - - - Tags: norsk, nuug. - -
-
-
- -
-
Checking server hardware support status for Dell, HP and IBM servers
-
2009-02-28 23:50
-
-

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 =~ s/^.+?;(Beskrivelse;)/$1/;
-
-            my @f = split(/\;/, $line);
-            @f = @f[13 .. $#f];
-            my $lastend = "";
-            while ($f[3] eq "DELL") {
-                my ($type, $startstr, $endstr, $days) = @f[0, 5, 7, 10];
-
-                my $start = POSIX::strftime("%Y-%m-%d",
-                                            localtime(str2time($startstr)));
-                my $end = POSIX::strftime("%Y-%m-%d",
-                                          localtime(str2time($endstr)));
-                $str .= "$type $start -> $end ";
-                @f = @f[14 .. $#f];
-                $lastend = $end if ($end gt $lastend);
-            }
-            my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
-            tag_machine_unsupported($machine)
-                if ($lastend 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 / ) {
-        # This code ignore extended support contracts.
-        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 few computers to administer. :)

- -

Update 2009-03-06: The IBM page do not include extended support -contracts, so it is useless in that case. The original Dell code do -not handle extended support contracts either, but has been updated to -do so.

-
-
- - - - Tags: english, nuug. - -
-
-
-

RSS feed