X-Git-Url: http://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/17663f4b507f9a77277fedb661a53a0bd65f825b..eb0ad84cc9e4987d108fc9bfb26fa7480fee2838:/blog/index.rss diff --git a/blog/index.rss b/blog/index.rss index a62f574ecf..d2d00b244d 100644 --- a/blog/index.rss +++ b/blog/index.rss @@ -6,6 +6,71 @@ + + Returning from Skolelinux developer gathering + Returning_from_Skolelinux_developer_gathering.html + Returning_from_Skolelinux_developer_gathering.html + Sun, 29 Mar 2009 21:00:00 +0200 + +<p>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. :)</p> + + + + + Time for new LDAP schemas replacing RFC 2307? + Time_for_new__LDAP_schemas_replacing_RFC_2307_.html + Time_for_new__LDAP_schemas_replacing_RFC_2307_.html + Sun, 29 Mar 2009 20:30:00 +0200 + +<p>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.</p> + +<p>In <a href="http://www.skolelinux.org/">Debian Edu/Skolelinux</a>, +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.</p> + +<p>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.</p> + +<p>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.</p> + +<p>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?</p> + + + Hva er egentlig en åpen standard? Hva_er_egentlig_en___pen_standard_.html @@ -384,211 +449,5 @@ i denne sammenhengen.</p> - - Teknisk program for Go Open 2009 er nesten ferdig - Teknisk_program_for_Go_Open_2009_er_nesten_ferdig.html - Teknisk_program_for_Go_Open_2009_er_nesten_ferdig.html - Thu, 5 Mar 2009 22:30:00 +0100 - -<p>Etter lang tids jobbing begynner endelig programmet til det -tekniske sporet på konferansen <a href="http://www.goopen.no/">Go Open -2009</a> å bli ferdig. Det blir 9 punkter på programmet, og etter alt -å dømme blir det disse 9:</p> - -<ul> - -<li>"Open Telephony: A solution greater than the sum of its parts" med - Jon "maddog" Hall</li> -<li>OpenSolaris-relatert med Ian Murdock fra SUN</li> -<li>"The inner workings of the OpenStreetmap project and the - technology used" med Andy Allan </li> -<li>Coreboot-relatert med Peter Stuge</li> -<li>"Gratis værdata fra Meteorologisk institutt" med Trond Michelsen</li> -<li>RRDtool/Nagios-relatert med Tobias Oetiker</li> -<li>"Developers guide to server-side productivity and fun using open - source platforms and frameworks" med en gjeng folk fra - JavaBin-miljøet</li> -<li>"G(et)it Nå!" med Marcus Ramberg</li> -<li>Om kontrolltelling av valgresultater med fri programvare med Mitch - Trachtenberg</li> - -</ul> - -<p>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.</p> - - - - - 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 =~ 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/&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 / ) { - # This code ignore extended support contracts. - 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 few computers to administer. :)</p> - -<p>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.</p> - - -