MultiTech iSMS – Firmware Version 1.51.9 verfügbar

Multi-Tech iSMSAb sofort ist eine neue Firmware für das MultiTech iSMS mit der Version 1.51.9 verfügbar, in der einige Probleme mit dem SMS-Modem sowie dem Acknowledgment behoben wurden. Wir empfehlen allen Nutzern des Geräts, die aktuell die Firmware Version 1.50.7 aufgespielt haben, ein Update durchzuführen.
Vorher wird noch empfohlen, Ihre aktuelle Konfiguration zu sichern, damit diese nach erfolgreichem Aktualisierungsvorgang wieder eingespielt werden kann.
Folgende Schritte sind für das Backup sowie die Aktualisierung durchzuführen:

  1. Laden Sie die Firmware Version 1.51.9 herunter
  2. Entpacken Sie das Archiv und legen die .bin File auf Ihrem Computer ab
  3. Melden sich über das Web-Frontend an Ihrem Gerät an
  4. Klicken Sie in der Navigationsleiste auf „Utilities
  5. Wählen Sie im linken Menü „Backup“ aus
  6. Klicken Sie rechts auf den Button „Export“ (es wird ein .tar Archiv mit Zeitstempel in Ihr Standard Download Verzeichnis des Browsers heruntergeladen)
  7. Klicken Sie im linken Menü auf den Punkt „Firmware Upgrade
  8. Klicken Sie in der Mitte auf den Button „Datei auswählen“ und wählen Sie anschließend die .bin Datei aus, die in Punkt 2 entpackt wurde
  9. Klicken Sie auf den Button „Upgrade
  10. Nach einigen Minuten ist das Gerät wieder betriebsbereit (Achtung: Es kann sein, dass die IP des Geräts zurückgesetzt wurde. Daher bei erfolglosem Verbindungsaufbau mit der Standard-IP 192.168.2.1 eine Verbindung herstellen und mit den Zugangsdaten Admin/Admin anmelden)
  11. Klicken Sie nach erfolgreicher Anmeldung wieder auf „Utilities“ in der Navigationsleiste
  12. Klicken Sie im linken Menü auf „Backup
  13. Wählen Sie das .tar Archiv aus (falls das Backup wie in Punkt 6 exportiert wurde)
  14. Klicken Sie auf „Import
  15. Nach einem kurzen Neustart des Geräts ist nun die aktuelle Firmware sowie Ihre Konfiguration installiert

Hinweis: Mit der Firmware Version 1.51.9 wurde ein Feature eingebaut, welches mehrere SMS, die an einen Server geschickt werden, in einer XML-Datei verschickt. Mit der aktuellen Version des sendsms.pl Scripts, kommt es hier zu einem PERL-Fehler. Im Webinterface unter dem Punkt “SMS Services” > “SMS API” ist daher ganz am Ende der Seite die Anzahl der zu versendenden SMS innerhalb eines XML-Dokuments auf 1 zu setzen.
Für die initiale Einrichtung sowie die Anbindung des Gerätes an Nagios / Icinga, haben wir die Kurzanleitung in unserem Online Shop ebenfalls angepasst.
Haben sie Fragen oder Interesse an anderen Produkten für Ihre Überwachung?
Dann besuchen Sie einfach unseren NETWAYS Online-Shop.
Für einen persönlichen Kontakt stehen wir Ihnen ebenfalls sehr gerne zur Verfügung – nutzen Sie hierfür einfach unser Kontaktformular, schreiben Sie uns eine E-Mail oder rufen Sie uns an! Alle Details zum Shop-Kontakt finden Sie hier.

Christian Stein
Christian Stein
Lead Senior Account Manager

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Senior Sales Engineer und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

Serie NSClient++ – Teil 8: Eigene Skripte

NSClient++ verfügt über eine Vielzahl von Abfragemöglichkeiten um Windows Server zu überwachen.
Viele der Überwachungsmöglichkeiten und Konfigurationsparameter für diese wurden bereits in der NSClient++ Serie vorgestellt.
Immer dann wenn weitere Applikationen, Hardware, Logdateien etc. überwacht werden sollen stoßen die NSClient++ Module überwiegend an die Grenzen ihrer Möglichkeiten. Eigene Skripte müssen her…
Das Modul CheckExternalScripts ist genau für diesen Zweck gedacht und dient als Wrapper um eigene Skripte auszuführen. Vorrausetzung hierfür ist das Windows die Skriptsprache unterstützt und das jeweilige Skript einen validen Icinga/Nagios Returncode zurückliefert.

NSClient++ und externe Skripte

In der NSC.ini beeinflussen die Folgenden Sektionen das verhalten der “ExternalScripts”:
[External Script] beschreibt das verhalten beim ausführen der Skripte. Mit “command_timeout=” wird der maximale Ausführungszeitrahmen (in Sekunden) eines Skripts/Plugins durch NSClient++ definiert. Achtung: NSClient++ bricht danach die Ausführung ab, unter Umständen kann das Skript jedoch weiterlaufen. Die Optionen “allow_arguments=” und “allow_nasty_meta_chars=” definieren ob beim ausführen von Icinga/Nagios Seite aus Argumente mit übergeben werden dürfen und ob “unangenehme” Zeichen übermittelt werden dürfen (z.B.: |`&><'"\[]{} ). Unter [Script Wrappings] werden die Interpreter für die verschiedenen Dateieindungen der Skripte konfiguriert. Mit den Variablen %SCRIPT% und %ARGS% wird definiert an welcher Stelle das Skript ausgeführt werden soll und wo beim Aufruf die Argumente übergeben werden.

vbs=cscript.exe //T:30 //NoLogo scripts\lib\wrapper.vbs %SCRIPT% %ARGS%
ps1=cmd /c echo scripts\%SCRIPT% %ARGS%; exit($lastexitcode) | powershell.exe -command -

[External Scripts] gibt nun schlussendlich die eigentlichen Skripte und ihre Ausführungsparameter an:

check_icinga.bat=scripts\icinga.bat

Oder auch, ohne den Skriptwrapper zu nutzen:

check_powershell_exchange=cmd /c echo scripts\exchange.ps1 | powershell.exe -command -

Sollen Skripte verwendet werden, die außerhalb des NSClient Verzeichnisses liegen muss jeweils der absolute Pfad verwendet werden.

Perlskripte unter Windows

Um Perl Skripte über den NSClient++ auszuführen benötigt man unter Windows entweder einen Perl Interpreter, z.B.: Strawberry Perl oder man kompiliert die jeweiligen Plugins zuvor mit dem Perl Modul PAR::Packer zu ausführbaren .exe Dateien:

$ perl -MCPAN -eshell
cpan> install Bundle::libwin32
cpan> install PAR::Packer
$ pp -o check_test.exe check_test.pl

Wer bei der Installation von PAR::Packer auf einen Fehler stößt: http://www.nntp.perl.org/group/perl.par/2012/03/msg5306.html

Weekly Snap: Averting Java Plugins, Playing with HTML 5 & Hooks

30 Jan – 3 Feb turned over a new month with expo reflections, an OSDC program, and a nifty Java idea for Icinga/Nagios plugins – all topped off with our 100th development blog post.
Bernd brought home a few impressions from his visit to the Cloud Expo Europe in London and Lennart found a way around writing Java plugins for Icinga / Nagios.
From the development team, Angsar toyed with the idea of programming games in HTML5 while Marius showed how to add hooks in Perl to make patching vendor code a little easier.
Pamela closed the Open Source Data Center conference Call for Papers, and announced the preliminary program of speakers. She also reminded early birds to get in before  15 February for special conference rates.

Bitte einhängen!

Software funktioniert immer und ist ausschließlich ohne Bugs. Falls nicht ist sowieso immer der Vendor schuld. Der hat allerdings gerade keine Zeit und damit dauert es bis zur nächsten Bug-Fix Release.
Auch kein Problem, immerhin ist das Produkt kostenlos und der Quellcode offen, aber Hersteller Code ändern? Wenn in der Software selber keine Hook Konzepte oder Factories vorgesehen sind ist man nicht mehr Update-Fähig. Patches passen nicht mehr auf die neue Version und müssen mühsam angepasst werden oder man hat die Dokumentation verlegt oder erst gar keine angelegt.
Unter Perl gibt es ein paar Interessante Konzepte, Hooks nachträglich anzulegen. Eine davon ist Hook::WrapSub, welche Aufruferketten mit eigenen Prozeduren verbindet.
Folgendes Beispiel:

#!/usr/bin/perl -w
package TEST_SCRIPT::BINARY;
use version 1.0;
use strict;
use subs qw(do_something);
sub do_something {
        my ($first, $last) = @_;
        return sprintf('My name is %s, %s', $last, $first);
}
print do_something('Eduart', 'Zimmermann');
print "\n";
exit(0);

Ein Aufruf brachte folgendes Ergebnis:

$ perl test_script.pl
My name is Zimmermann, Eduart

Wir bräuchten nun eine Änderung in der Funktion ‘do_something‘ ohne den eigentlich Code zu verändern und verbauen eine Aufruferkette in einem eigenen Module:

package HookThat;
our $VERSION='1.0';
use Hook::WrapSub;
use Data::Dumper;
Hook::WrapSub::wrap_subs
        sub {
                splice @_, 0, 1, $_[0]. '-Hubert';
        },
        'TEST_SCRIPT::BINARY::do_something',
        sub {
                $Hook::WrapSub::result[0] =~ s/My name is/I am the holy/;
        };
1;

Dieses Modul binden wir in den bisherigen Code ein. Das bleibt die einzige Änderung. Eventuell gibt die Software Möglichkeiten vor, eigene Module in die Ausführung zu laden. Dann benötigt man überhaupt keine Änderungen am Quelltext mehr. Außerdem, alle eigenen Anpassungen in einem Module zu organisieren erleichtert eine spätere Wartung deutlich.

$ diff -u test_script.pl  test_script_neu.pl
--- test_script.pl	2012-02-02 15:27:12.476374490 +0100
+++ test_script_neu.pl	2012-02-02 15:30:58.388368456 +0100
@@ -4,6 +4,7 @@
 use strict;
 use subs qw(do_something);
+require 'HookThat.pm';
 sub do_something {
 	my ($first, $last) = @_;

Die Ausgabe ändert sich durch unseren Hook folgendermaßen:

$ perl test_script.pl
I am the holy Zimmermann, Eduart-Hubert

Die Funktion ‘wrap_subs‘ erweitert den Aufruf von ‘do_something‘ durch einen Pre- und einen Postwrapper. In der ersten Prozedur ändern wir das Argument des Vornamens und verändern in der zweiten (bzw. letzten) den ersten Satzteil. Es lassen sich dadurch auch komplexe Ketten gestalten um die Software passend für den jeweiligen Einsatzzweck fit zu machen, z.B. Mailverarbeitung zu generalisieren oder ‘eigentlich’ interne Datenquellen durch Fremdsysteme (DB, Soap) zu befüllen ohne die Boardmittel der Anwendung zu verändern.
Für Perl gibt es noch weitere Module die mehr oder minder den selben Zweck erfüllen, Hook::LexWrap sei hier noch zu nennen, welches allerdings in der aktuellen Version keine Änderung der Argumente zulässt (Und dadurch fast schon wieder völlig unbrauchbar ist). Auch den Weg ‘zu Fuß’ gibt es natürlich (“Perl Symbol Table Hackery”):

*_Foo = *Foo;
*Foo = sub { print "Doing something different\n"; };

Alle diese Möglichkeiten sind zwar nicht besonders Simple und Perl erhöht nicht gerade die Leserlichkeit. Beim nächsten Update hält sich der Frust aber deutlich in Grenzen und die Anpassungen sind schnell wieder aktiv – Kaffeetrinken – Fertig!
Achso, dies ist übrigens der hundertste (ja, 100) Dev-Blogpost – Tättärätäääää! Vielen Dank an alle im Development für all die Gedanken, Zeilen und Worte im Schweiße des Angesichts ausformuliert …

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

Weekly Snap: Epic Perl, OpenNebula & HTML5

2 – 6 January kicked off 2012 with open cloud plans, an epic tool for Perl and a peek into the world of HTML5.
Sebastian started the New Year with new challenges for the Managed Services team – to design and implement a private cloud for internal and client use. OpenNebula, the open source cloud framework was the tool of choice, thanks to its flexibility, scalability, customizability and stability. Various hypervisors can be used and combined, such as KVM, XEN, VMWare and even container-based solutions like LXC. OpenNebula also offers flexibility in storage and repository, which can be local on individual hosts, or shared with NFS, GFS , OCFS2 iscsi, etc., or even on clustered LVM. Stay tuned for more open cloud posts on the blog, or join this year’s Open Source Data Center Conference where Constantino Vazquez Blanco of OpenNebula will present and run an intensive workshop.
Meanwhile Johannes got excited about HTML5, and more specifically about the classList API from html5demos.com. Sharing a snippet of script, he let the code speak for itself.
Christoph continued his journey into Perl plugin programming with a look at the EPIC extension for Eclipse. Better known for Java and C/C++, EPIC happens to also offer a Perl IDE. He listed some of its features such as syntax highlighting and validation, debugging, regex testing and auto-complete. Get the source code off Sourceforge or download direct off the Eclipse homepage. Installation is simplified with the Eclipse Update Manager and ‘http://e-p-i-c.sf.net/updates/testing’.

Epische Entwicklungsumgebung in Eclipse

In letzter Zeit habe ich häufiger mit dem Thema Plugin Programmierung zu tun. Und da, wie letzte Woche schon geschrieben, die Programmiersprache meiner Wahl in den meisten Fällen Perl ist, suche ich schon seit längerem eine adäquate IDE. Nun gibt viele Wege ein Programm in Perl zu schreiben. Der auf jedem unixoiden System verfügbare Weg ist vi, mit vim sogar mit Syntax highlighting. Unter win-digen Umständen tut’s auch das notepad. Aber so richtig komfortabel sieht das alles nicht aus.
Eine wirklich gute Hilfe, die ich vor kurzem gefunden habe, ist die Erweiterung EPIC für Eclipse. Eclipse ist an und für sich als Entwicklungsumgebung für Java bekannt, viele kennen auch noch die Erweiterung für C/C++ aber dass Eclipse auch etwas für Perl bietet ist nicht jedem bekannt. Natürlich steht es wie Eclipse selber auch unter einer Open Source Lizenz, der Source Code kann daher hier bezogen werden, die Installation gestaltet sich aber ungleich einfacher wenn man den Eclipse Update Manager benutzt. Dieser befindet sich im Menü “Help” unter “Install new Software”.
Trägt man hier die Adresse “http://e-p-i-c.sf.net/updates/testing” ein, ist man nur noch einen Klick von der fertigen Installation entfernt.
Eclipse selber steht für die meisten Plattformen zur Verfügung. Entweder man installiert es unter der jeweiligen Linux Distribution direkt aus den Software Repositories oder man bezieht es von der Eclipse Homepage.

Vorteile

Ich kann hier in der kürze natürlich nicht alle Features aufzählen, die wichtigsten sind jedoch:

  • Syntax Highlighting
    Sieht nett aus und funktioniert richtig gut.
  • Syntax Validation
    Man muss nicht immer erst das Programm starten damit man merkt dass es doch nicht so tut wie man will
  • Debugger
    Erleichtert einem das debugging enorm durch die Möglichkeit Breakpoints zu setzen und den Wert von Variablen zur Laufzeit zu überprüfen und wahlweise auch zu ändern.
  • Wortvervollständigung
    für tippfaule, ein Druck auf Enter und das Wort ist da
  • Integrierte Hilfe
    Integration von perldoc. Man hält den Mauszeiger über einen Befehl und schon erscheint die Hilfe. (Wichtig: unter dem Menü Window \ Preferences muss der Pfad zu Perl vollständig und richtig hinterlegt sein)
  • Regex Testing Machine
    Gegen böse Überraschungen gut. Einfach mal testen ob der Regex auch das findet was man erwartet.
Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

Weekly Snap: AwStats Reporting, Perl for Programming & CSS Frameworks

26 – 30 December bid 2011 farewell with handy tools for reporting and programming.
Ronny took a look at report generation with AwStats. The well known tool can generate static PDF reports when combined with htmldoc. From classic log files such as web, ftp or mail servers to network traffic. All that AwStats needs is a log file like source from which it can process according to parameters given in its configuration. Corporate branding of reports with images, styles and HTML links is of course also possible.
Following on, Christoph glorified Perl as his language of choice in writing monitoring plugins. Nagios and Icinga offer complete freedom in this regard, so operating system portability plays a more important role. Java, Python and Perl win points here, especially when interpreters are available. Nonetheless Christoph’s preference is Perl thanks to the flexibility CPAN provides. Language aside, the Nagios development guidelines are important to abide by, and modules for Perl such as Nagios::Plugin::Threshold or Nagios::Plugin::Range are particularly useful. For database interfaces, he recommended DBD::Sybase, DBD::mysql and Win32::OLE.
Continuing with the programming thread, Marius signed off by sharing the Swiss Army knives of CSS. In creating web designs what work with all browsers, he recommended various CSS frameworks. Reset CSS from both Eric Meyer or YUI allow developers to “reset” the pre-defined formatting of a browser for a fresh start, and BluePrint goes a step further to offer help in structural design, typography and columns. From there, he picked out  960 Grid System for tables, sketchbooks and templates for use with Inkscape, Gimp, Illustrator or even Photoshop. Finally, for a complete all-in-one solution Marius recommended HTML5 Boilerplate.

The glory of Perl

Immer wieder kommt es im Alltag eines Sysadmins mit  Monitoring Ambitionen zu dem Fall, dass er etwas überwachen möchte, dass so vorher noch nie dagewesen ist oder dass er bestimmte Aspekte mit einbeziehen will/muss/möchte die bisher noch nicht in ein Plugin gegossen wurden.
An Stellen wie diesen kommt man oft nicht am neu- oder umprogrammieren eines Plugins vorbei. Hierbei stellt sich im Regelfall die Frage: “Welche Sprache benutze ich denn?”
Nagios und Icinga verstehen alle Programmiersprachen, die es fertig bringen auf der Kommandozeile ein Zahl zwischen 0 und 3 auszugeben. Das sind meines Wissens nach so gut wie alle und daher ist man der Lösung der Frage noch keinen Schritt näher gekommen.
Ein weit wichtigerer Aspekt der Auswahl ist wohl die Portierbarkeit auf verschiedenartige Systeme. So kann man z.B. mit Microsofts Powershell viele tolle Sachen machen. Sobald man dieses aber auf einem alten Windows oder wohl möglich auf einem unixoiden System ausführen will wird es trickreich bis unmöglich.
Sprachen wie Java, Python oder Perl sind hierfür einfach besser geeignet. Sie bieten für alle gängigen und für viele exotische Systeme Interpreter oder lassen sich, wie z.B. Perl, auch gleich mit Interpreter in ein handliches Paket (windows Exe) schnüren. Wie das funktioniert wurde im Blog vor kurzem schon mal erklärt.
Meine Wahl fällt schon seit längerem immer wieder auf Perl. Wenn’s ums umschreiben geht kommt man oft nicht dran vorbei weil viele Plugins schon in Perl verfasst wurden. Wenn’s ums neu schreiben geht macht einem Perl das Leben einfach einfacher. Dank des universellen und einfach nur genialen CPAN, dass mit einem Haufen von Modulen für jeden nützlichen bis unnützen Zweck daher kommt, kann man innerhalb kürzester Zeit eigene Plugins für so ziemlich alles schreiben was eine Schnittstelle aufweist bis hin zu Modulen die einem die Logüberwachung oder das auslesen von CLI tools vereinfachen.
[poll id=”3″]
Wie mit jeder Sprache ist es wichtig, die Nagios Developement Guidelines einzuhalten, um den Nutzen eines Plugins zu maximieren. Nützlich sind hierfür z.B. die Module Nagios::Plugin::Threshold und Nagios::Plugin::Range. Beide kann man hier finden. Jedoch kann man diesen Teil auch noch leicht selbst implementieren.
Schwieriger wird es bei so Dingen wie einer Datenbankschnittstelle. Aber auch hierfür bietet Perl schon fix und fertige Module die bloß noch eingebunden werden müssen. Das sind z.B. DBD::Sybase für mssql oder DBD::mysql.
Auch für die universelle Windows Verwaltungs Datenbank bietet das CPAN ein Modul(Win32::OLE), mit dessen Hilfe man fix ein generisches Plugin für WMI angelegt hat.
Und last but not least hat Perl einfach das schönste Wappentier 🙂 Für mich steht die Entscheidung fest und Ihnen wird sie hoffentlich jetzt einfacher gemacht die “richtige” Sprache für die Plugin Programmierung auszuwählen.

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

Perl-Scripts mit PAR::Packer kompilieren

Manchmal ist es notwendig, Perl-Scripts auf Systeme zu verteilen, auf denen entweder kein Perl installiert ist oder auf dem keine zusätzlichen Perl-Module installiert werden können.
Für diesen Fall gibt es ein Perl-Modul namens PAR::Packer, mit dem beliebige Perl-Scripts inklusive aller Abhängigkeiten kompiliert und in ein einziges Binary gelinkt werden können.
PAR::Packer ist dabei plattformunabhängig und kann so z.B. unter Windows und Linux eingesetzt werden.
Zunächst installieren wir PAR::Packer mit Hilfe von CPAN:
# cpan install PAR::Packer

Je nach Anzahl der noch fehlenden Perl-Module kann dies einige Minuten dauern. Da Windows von Haus aus kein Perl anbietet, muss dieses evtl. vorher installiert werden (Tipp: Strawberry Perl – http://strawberryperl.com/).
Danach können wir unser erstes Perl-Script kompilieren:
$ cat hello.pl
print "Hello World!\n";
$ pp -o hello hello.pl
$

Als Ergebnis erhalten wir ein Binary namens “hello”, das nun neben dem kompilierten Script auch die Teile der Perl-Laufzeitumgebung enthalten, die zum Ausführen des Scripts notwendig sind. Das Binary hat dabei keine Abhängigkeiten auf Perl-Libraries:
$ ldd hello
linux-vdso.so.1 => (0x00007fffad7ff000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5a23cc0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5a23921000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5a23f0a000)

Ansonsten verhält sich das Binary genauso wie unser ursprüngliches Perl-Script:
$ ./hello
Hello World!
$

Weitere Informationen zu PAR::Packer gibt es z.B. unter http://search.cpan.org/dist/PAR/lib/PAR/Tutorial.pod.

Weekly Snap: Monitoring Aida Cruises, Linux VFS & Perl Tips

6 – 10 June gave advice on Linux VFS and Perl script dependencies and shared a monitoring project from ships at sea.
Starting off, Sebastian put the Linux Virtual File System (VFS) API to the test. Since the improvements made to “path lookup” and “dcache” in Linux kernel v. 2.6.38, performance gains of up to 35% were promised. Unfortunately Sebastian found only a 7% improvement in his test system of a home directory with git-checkouts of various Linux versions and an additional 1 million files.  He tested both the current stable Debian 2.6.32 and the recently compiled v.3 on the same system. From these results, he recommended against VFS for Debian Squeeze servers, in favour of the corresponding distribution kernel.
Also happy to help, Eric shared his script to check the dependencies of various Perl scripts. Helpful to those who find themselves installing missing modules for unfamiliar Perl scripts, it extracts the modules used, and checks if they are already on your system. Through the commented lines, missing modules can then be installed via CPAN.
Finally from the consulting team, Birger got excited about his recent monitoring project for Aida cruises. At the headquarters in Rostock and on their cruise liners across the seven seas, Aida needed to ensure their IT infrastructure would always run smoothly. So Birger implemented Icinga with LConf for centralised configuration, and enabled monitoring results to be received via satellite from ships at sea. Understandably for him, the project gave the term ‘monitoring satellites’ a whole new meaning.