So,
ich habe eine Lösung herausgefunden. Für alle, die dasselbe Problem haben, hier ist ein Lösungsweg:
Jede Linux Distribution hat andere release Dateien unter /etc/ gespeichert. Diese Dateien sind oft wie folgt benannt "DISTRIBUTION-release".
Diese Dateien beinhalten Informationen über die Distribution und die Version. Bei manchen Distributionen auch Infos über "Codenames".
Da jede Linux Distribution anders ist, gibt es keinen sicheren Weg diese Distributions Informationen auszulesen. Wer also ein Programm schreibt, egal ob Batch-Skript oder PHP-Skript, kann Informationen wie die Linux-Distribution oft gut gebrauchen (Spezielle Pfade, Konfigurationswerkzeuge wie z.B. Yast [SuSE], Update Check, etc).
Um diese Informationen zuverlässig auszulesen gibt es leider nur einen manuellen Weg! Man muss jede mögliche release-Datei anfragen und wenn eine Datei einen Inhalt hat, diese auslesen. Falls keine Datei einen Inhalt hat, handelt es sich um eine "Unbekannte Distribution" und muss aus der Liste entfernt werden.
Liste der Distributionen:
Annvix: /etc/annvix-release
Arch Linux: /etc/arch-release
Arklinux: /etc/arklinux-release
Aurox Linux: /etc/aurox-release
BlackCat: /etc/blackcat-release
Cobalt: /etc/cobalt-release
Conectiva: /etc/conectiva-release
Debian: /etc/debian_version, /etc/debian_release (rare)
Fedora Core: /etc/fedora-release
Gentoo Linux: /etc/gentoo-release
Immunix: /etc/immunix-release
Knoppix: knoppix_version
Linux-From-Scratch: /etc/lfs-release
Linux-PPC: /etc/linuxppc-release
Mandrake: /etc/mandrake-release
Mandriva/Mandrake Linux: /etc/mandriva-release, /etc/mandrake-release, /etc/mandakelinux-release
MkLinux: /etc/mklinux-release
Novell Linux Desktop: /etc/nld-release
PLD Linux: /etc/pld-release
Red Hat: /etc/redhat-release, /etc/redhat_version (rare)
Slackware: /etc/slackware-version, /etc/slackware-release (rare)
SME Server (Formerly E-Smith): /etc/e-smith-release
Solaris SPARC: /etc/release
Sun JDS: /etc/sun-release
SUSE Linux: /etc/SuSE-release, /etc/novell-release
SUSE Linux ES9: /etc/sles-release
Tiny Sofa: /etc/tinysofa-release
TurboLinux: /etc/turbolinux-release
Ubuntu Linux: /etc/lsb-release
UltraPenguin: /etc/ultrapenguin-release
UnitedLinux: /etc/UnitedLinux-release (covers SUSE SLES8)
VA-Linux/RH-VALE: /etc/va-release
Yellow Dog: /etc/yellowdog-release
Man kann diese Distributionen z.B. in ein Array speichern und der reihe nach durchgehen.
Ein kleiner Haken ist, dass der Inhalt dieser release Dateien sehr unterschiedlich ist.
Bei Mandriva Linux ist in der release Datei lediglich eine Zeile:
Mandriva Linux release 2006.0 (Official) for i586
Bei SuSE Linux sind es zwei Zeilen:
openSUSE 10.2 for i586
VERSION = 10.2
Und bei Ubuntu wurde alles im Stil der zweiten Zeile vom SuSE release geschrieben. Also man muss also für jede Distribution eine eigene Prozedur ausführen um die gewünschten Infos zu erhalten.
Es ist dennoch machbar! Der Inhalt der release Dateien ist eigentlich immer gleich, lediglich der Aufbau der Dateien ist unterschiedlich. Man muss also lediglich ein Skript schreiben, dass je nach Distribution, eine unterschiedliche Methode anwendet, diese release Dateien auszulesen um am Ende einheitliche Ergebnisse zu erhalten.
Ich hoffe dieser Tipp konnte allen Interessenten helfen!
MfG domatrix