GNU/Linux-Distributionen gibt es wie Sand am Meer. Doch welche habe ich nun vor mir?
Natürlich wird sich kaum einer, der vor dem Recher, den er täglich nutzt, sitzt (und nicht unter Alzheimer leidet), diese Frage stellen. Aber stellen wir uns einmal vor, ein IT-Dienstleister muss – vor Ort – das ihm noch unbekannte System eines Kunden betreuen. Oder: die Arbeitsschritte einer plattformübergreifenden Anwendung hängen davon ab, auf welcher Distribution letztgenannte ausgeführt wird.
Letztgenannter Fall lag bei Icinga Web 2 vor. Vom Benutzer – zwecks Installation – manuell auszuführende Befehle hängen von der Distribution, auf der Icinga Web 2 installiert wird, ab. Das Problem: diese Information muss möglichst Distributionsneutral abgefragt werden. Die Lösung: /etc/os-release.
Letztgenannte Datei ist erweiterbar – und vor allem einfach zu analysieren:

'/(?<!.)\s*ID\s*=\s*([\'"]?)(.*?)\1\s*(?!.)/msi'

Mit diesem PCRE-PHP-String lässt sich jede Zeile der Datei darauf überprüfen, ob sie die Information, die wir haben wollen, enthält. Letztgenannte kann direkt extrahiert werden.
Aber leider gibt es nicht nur die tollen, neuen Distros, die auf systemd bauen – sondern auch solche, die schon fast Jahrzehnte auf dem Buckel haben (können). Diese haben nur ihre spezifischen Release-Files. Es folgen ein paar Beispiele:

  • /etc/fedora-release
  • /etc/centos-release
  • /etc/redhat-release
  • /etc/SuSE-release

Nur die Existenz der 2 letztgenannten Dateien zu überprüfen ist sehr unprezise, da bspw. /etc/redhat-release auch auf CentOS vorhanden ist. /etc/SuSE-release findet sich sowohl auf openSUSE, als auch auf SLES.
Wem das zu aufwändig ist – der kann auch von Icinga 2 gebrauch machen:

$ icinga2 --version
icinga2 - The Icinga 2 network monitoring daemon (version: v2.3.0-...)
Copyright (c) 2012-2015 Icinga Development Team (https://www.icinga.org)
.
.
.
System information:
  Operating system: Linux
  Operating system version: 3.13.0-48-generic
  Architecture: x86_64
  Distribution: CentOS release 6.5 (Final)

Fazit: systemd hat auch seine Vorteile. 😉

Alexander Klimov
Alexander Klimov
Developer

Alexander hat 2017 seine Ausbildung zum Developer bei NETWAYS erfolgreich abgeschlossen. Als leidenschaftlicher Programmierer und begeisterter Anhänger der Idee freier Software, hat er sich dabei innerhalb kürzester Zeit in die Herzen seiner Kollegen im Development geschlichen. Wäre nicht ausgerechnet Gandhi sein Vorbild, würde er von dort aus daran arbeiten, seinen geheimen Plan, erst die Abteilung und dann die Weltherrschaft an sich zu reißen, zu realisieren - tut er aber nicht. Stattdessen beschreitet er mit der...