Implementierungsmäßig ist das kein Problem. Ich bin einfach auf der Suche nach einer schon existierenden Lösung (Sollte ja öfters ein Problem unter Linux sein) bzw Idee wie ich es machen kann. Und die Sache mit lsb_release klingt ja schon sehr gut. Vermutlich werde ich lsb_release benutzen sofern verfügbar und ansonsten manuell in den Files parsen.tisu hat geschrieben:Könnte man das nicht auch durch eine 3-fache if-Abfrage realisieren? Bzw. einer Schleife mit verschachtelter if-Anweisung? Das müsste doch eigentlich gehen, denn im Endeffekt hast Du doch nur *release, issue und *version abzufragen ...
Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.
Auf welcher Linux Distro läuft ein Script?
Moderator: Moderatoren
Re: Auf welcher Linux Distro läuft ein Script?
Re: Auf welcher Linux Distro läuft ein Script?
Manche Distributionen haben lsb-release und manche haben lsb_release. [Man achte auf die Strichsetzung]
openSUSE 11.4 (x86_64)
KDE: 4.6

KDE: 4.6

Re: Auf welcher Linux Distro läuft ein Script?
Danke für den Hinweis. Korrektur: Versuch erst mit lsb_release, dann lsb-release und dann eigenes parsen.tisu hat geschrieben:Manche Distributionen haben lsb-release und manche haben lsb_release. [Man achte auf die Strichsetzung]
Re: Auf welcher Linux Distro läuft ein Script?
...und manche haben es garnichttisu hat geschrieben:Manche Distributionen haben lsb-release und manche haben lsb_release. [Man achte auf die Strichsetzung]

Wissen, was man weiß,
und wissen, was man nicht weiß,
das ist wahres Wissen.
(Konfuzius)
"Auf der dunklen Seite gibt es keine Kekse, Luke! Bleib lieber hier!" - Obi-Wan Kenobi
und wissen, was man nicht weiß,
das ist wahres Wissen.
(Konfuzius)
"Auf der dunklen Seite gibt es keine Kekse, Luke! Bleib lieber hier!" - Obi-Wan Kenobi
Re: Auf welcher Linux Distro läuft ein Script?
lsb_release ist leider nicht in allen Distos standardmäßig installiert. lsb-release gibt es lt Standard nicht als Command. Dagegen ist die Datei /etc/lsb-release aber standardkonform. Ist allerdings ein ziemlicher KuddelMuddel bei den Distros diesbezüglich. Ich bin am Evaluieren mit VMWare-Installationen von verschiedenen Distros. Sobald ich Ergebnisse habe werde ich sie hier posten.tisu hat geschrieben:...Manche Distros kennen nicht lsb-release sondern lsb_release... Müsste Standard sein überall
http://linux.die.net/man/1/lsb_release...
Re: Auf welcher Linux Distro läuft ein Script?
Ist /etc/lsb-release auch bei neuen sidux-Installationen dabei? Bei mir finde
ich diese Datei leider auch nicht
ich diese Datei leider auch nicht

Wissen, was man weiß,
und wissen, was man nicht weiß,
das ist wahres Wissen.
(Konfuzius)
"Auf der dunklen Seite gibt es keine Kekse, Luke! Bleib lieber hier!" - Obi-Wan Kenobi
und wissen, was man nicht weiß,
das ist wahres Wissen.
(Konfuzius)
"Auf der dunklen Seite gibt es keine Kekse, Luke! Bleib lieber hier!" - Obi-Wan Kenobi
Re: Auf welcher Linux Distro läuft ein Script?
Findest Du auch nichts mitcero hat geschrieben:Ist /etc/lsb-release auch bei neuen sidux-Installationen dabei? Bei mir finde
ich diese Datei leider auch nicht
Code: Alles auswählen
ls /etc/*[-_]{release,version}
Die Distros sind da ziemlich unterschiedlich

Re: Auf welcher Linux Distro läuft ein Script?
Anbei das Script wie versprochen. Wer eine weitere noch nicht getestete Distro hat kann das Script ja gerne auf dieser ausführen und sein Ergebnis incl Distro Version hier posten
Ich update dann hier den Header des Scripts.

Code: Alles auswählen
#!/bin/bash
detectedDistro="Unknown"
regExpLsbInfo="Description:([^ ]*)"
regExpLsbFile="/etc/(.*)[-_]"
#
# Shell script which detects the Linux distro it's running on
#
# Returned distro Version the script was tested with
# ---------------------------------------------------------
# opensuse openSuSE 11.0 (no lsb_release) and 11.2 (lsb_release)
# fedora Fedora 12
# centos CentOS 5.4
# kubuntu Kubuntu 9.10
# debian Debian 5.0.3
# arch Arch
# slackware Slackware 13.0.0.0.0
# mandriva Mandriva 2009.1
# debian Knoppix 6.2
# linuxmint Mint 8
if [ `which lsb_release 2>/dev/null` ]; then # lsb_release available
lsbInfo=`lsb_release -d`
if [[ $lsbInfo =~ $regExpLsbInfo ]]; then
detectedDistro=${BASH_REMATCH[1]}
else
echo "??? Should not occur: Don't find distro name in lsb_release output ???"
exit 1
fi
else # lsb_release not available
etcFiles=`ls /etc/*[-_]{release,version} 2>/dev/null`
for file in $etcFiles; do
if [[ $file =~ $regExpLsbFile ]]; then
detectedDistro=${BASH_REMATCH[1]}
break
else
echo "??? Should not occur: Don't find any etcFiles ???"
exit 1
fi
done
fi
detectedDistro=`echo $detectedDistro | tr "[:upper:]" "[:lower:]"`
case $detectedDistro in
suse) detectedDistro="opensuse" ;;
linux) detectedDistro="linuxmint" ;;
esac
echo "Detected distro: $detectedDistro"
Zuletzt geändert von framp am 2. Jan 2010, 12:16, insgesamt 8-mal geändert.
Re: Auf welcher Linux Distro läuft ein Script?
Code: Alles auswählen
sojasau@horst ~/Scripte % ./distritest
Detected distro: arch
sojasau@horst ~/Scripte % uname -a
Linux horst 2.6.32-ARCH #1 SMP PREEMPT Sat Dec 26 09:02:58 CET 2009 x86_64 Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz GenuineIntel GNU/Linux

Greetz
glako
glako
Re: Auf welcher Linux Distro läuft ein Script?
Klasse! Kannst Du bitte noch posten bzw lsb_release -d? Da sieht man dann die genaue Distro Version die ich in den Scriptheader reinschreiben kann . Aus uname -a sieht man leider nur die Kernelversion 
Code: Alles auswählen
cat /etc/*[-_]{release,version}

Re: Auf welcher Linux Distro läuft ein Script?
framp hat geschrieben:Code: Alles auswählen
cat /etc/*[-_]{release,version}
Code: Alles auswählen
16 sojasau@horst ~ % cat /etc/*[-_]{release,version}
DISTRIB_ID=arch
cat: /etc/*[-_]version: Datei oder Verzeichnis nicht gefunden
Es extistiert unter /etc zwar eine Datei Namens arch-release, ist aber leer.
Das einzige was ich bislang auf ein bestimmten Zeitpunkt zurueckfuehren konnte ist das:
Code: Alles auswählen
head -1 /var/log/pacman.log
Code: Alles auswählen
[2009-12-15 17:21] installed filesystem (2009.07-1)
Greetz
glako
glako
Re: Auf welcher Linux Distro läuft ein Script?
Hm ... ich dachte bei Arch gibt es auch sowas wie Versionen wie bei den anderen Distros
Anyhow - ich adde auch arch ohne Version zum Header als getestete Distro

Re: Auf welcher Linux Distro läuft ein Script?
Jein, Arch schmeisst zwischendurch mal einen Snapshot zum installieren raus. Siehe hier:
http://wiki.archlinux.org/index.php/FAQ ... be_made.3F
Bei Slackware erhalte ich uebrigens das hier:
Mehrmals kopiert, auch von Arch rueber kopiert (wo es ja funktioniert).
http://wiki.archlinux.org/index.php/FAQ ... be_made.3F
Bei Slackware erhalte ich uebrigens das hier:
Code: Alles auswählen
sojasau@zitrone ~/Scripte % ./distritest
./distritest: line 20: syntax error in conditional expression: unexpected token `('
./distritest: line 20: syntax error near `Description:(['
./distritest: line 20: ` if [[ $lsbInfo =~ Description:([^ ]*) ]]; then'
2 sojasau@zitrone ~/Scripte %
Code: Alles auswählen
2 sojasau@zitrone ~/Scripte % cat /etc/*[-_]{release,version} :(
cat: /etc/*[-_]release: Datei oder Verzeichnis nicht gefunden
Slackware 13.0.0.0.0
Greetz
glako
glako
Re: Auf welcher Linux Distro läuft ein Script?
Ich auch auf meinem VMWare imageglako hat geschrieben:... Bei Slackware erhalte ich uebrigens das hier:Code: Alles auswählen
sojasau@zitrone ~/Scripte % ./distritest ./distritest: line 20: syntax error in conditional expression: unexpected token `(' ./distritest: line 20: syntax error near `Description:([' ./distritest: line 20: ` if [[ $lsbInfo =~ Description:([^ ]*) ]]; then' 2 sojasau@zitrone ~/Scripte %


Re: Auf welcher Linux Distro läuft ein Script?
Wollte eben noch Mandriva verifizieren. Da die Installation nur nach Eingabe einer gültigen eMailAdresse
fortgesetzt wird ist die Distro für mich gestorben. Vielleicht könnte ja jemand anderes mit Mandriva das Script checken...

Re: Auf welcher Linux Distro läuft ein Script?
Code: Alles auswählen
sojasau@localhost Dokumente]$ ./distritest
Detected distro: mandriva
Code: Alles auswählen
[sojasau@localhost Dokumente]$ cat /etc/*[-_]{release,version}
LSB_VERSION=lsb-3.1-ia32:lsb-3.1-noarch
DISTRIB_ID=MandrivaLinux
DISTRIB_RELEASE=2009.1
DISTRIB_CODENAME=pauillac
DISTRIB_DESCRIPTION="Mandriva Linux 2009.1"
Mandriva Linux release 2009.1 (Official) for i586
Mandriva Linux release 2009.1 (Official) for i586
Mandriva Linux release 2009.1 (Official) for i586
Mandriva Linux release 2009.1 (Official) for i586
cat: /etc/*[-_]version: Datei oder Verzeichnis nicht gefunden
Code: Alles auswählen
[sojasau@localhost Dokumente]$ lsb_release -d
Description: Mandriva Linux 2009.1
[sojasau@localhost Dokumente]$

Greetz
glako
glako
Re: Auf welcher Linux Distro läuft ein Script?
Nachdem ich den regulären Ausdruck aus dem if in eine Variable ausgelagert habe funktioniert es auch unter Slackwareframp hat geschrieben:Ich auch auf meinem VMWare imageglako hat geschrieben:... Bei Slackware erhalte ich uebrigens das hier:Code: Alles auswählen
sojasau@zitrone ~/Scripte % ./distritest ./distritest: line 20: syntax error in conditional expression: unexpected token `(' ./distritest: line 20: syntax error near `Description:([' ./distritest: line 20: ` if [[ $lsbInfo =~ Description:([^ ]*) ]]; then' 2 sojasau@zitrone ~/Scripte %
Dachte das ist irgendein Problem bei meiner Installation
Scheint so als hätte Slackware irgendwie Probleme mit RegExs in der bash.


Re: Auf welcher Linux Distro läuft ein Script?
Fedora 12 läuft hier gar nicht:
Code: Alles auswählen
./distrocheck
??? Should not occur: Don't find any etcFiles ???
Linux: Xfce 4.6
Re: Auf welcher Linux Distro läuft ein Script?
Genau das kommt hier jetzt auch mit Slackware.blacklips hat geschrieben:Fedora 12 läuft hier gar nicht:Code: Alles auswählen
./distrocheck ??? Should not occur: Don't find any etcFiles ???

Greetz
glako
glako
Re: Auf welcher Linux Distro läuft ein Script?
glako hat geschrieben:Genau das kommt hier jetzt auch mit Slackware.blacklips hat geschrieben:Fedora 12 läuft hier gar nicht:Code: Alles auswählen
./distrocheck ??? Should not occur: Don't find any etcFiles ???






Code: Alles auswählen
33c33
< if [[ $file =~ $regExpLsbFile ]]; then
---
> if [[ $lsbInfo =~ $regExpLsbFile ]]; then