Wie greife ich in der Befehlszeile auf den Namen der Distribution zu?

12

Ich habe eine Reihe von Distributionen, mit denen ich spiele. Ich beschrifte die SD-Karten, aber:

  1. Sie stehen auf dem Kopf
  2. Ich bin normalerweise in einem anderen Raum vom RPi

Ich habe in init.d einen Dienst eingerichtet, der mich per Pushover darüber informiert, wann mein Pi heruntergefahren oder gestartet wird (mithilfe der API über curl).

Ich möchte hiermit angeben, welche Distribution ich gerade verwende.

Ich kann auf meinem neuesten Boot sehen (mit Adafruit Raspbian spielen):

Linux raspberrypi 3.1.9adafruit+ #8 PREEMPT Wed Aug 1 18:02:42 EDT 2012 armv6l

Wie kann ich diese Informationen in mein Skript aufnehmen?

Ich habe lsb-release installiert, aber das gibt mir nur Folgendes:

pi@raspberrypi / $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux testing/unstable
Release:    testing/unstable
Codename:   n/a

Das würde genauso aussehen wie mein regulärer Raspbian.

Außerdem möchte ich wahrscheinlich selbst etwas über die bestimmte Instanz auf der SD-Karte angeben (da ich wahrscheinlich mehrere derselben Basisdistribution haben werde). Natürlich kann ich eine Datei einfach auf jeder SD-Karte an der gleichen Stelle ablegen, aber gibt es eine Konvention, wo diese Informationen abgelegt werden sollen?

Cade Roux
quelle
Wow cool. Können Sie darauf hinweisen, wie Sie dieses pushover / init.d-Ding zusammengestellt haben? Ich werde eine Frage stellen, wenn du sie beantwortest :)
Zlatko
@zladuric Eröffnen Sie ein Konto bei pushover.net. Die Curl-API ist ziemlich einfach. Ich habe ein einfaches Skript in init.d als "Dienst" eingerichtet und es sendet einfach verschiedene Benachrichtigungen beim Starten / Stoppen. Technisch gesehen handelt es sich um eine Start-Stopp-Benachrichtigung. Wenn also jemals ein "Start" erfolgt, wird eine Benachrichtigung gesendet. In der Praxis werden sie nur durch Booten und Herunterfahren gestartet oder gestoppt. Wenn Sie den vollständigen Code wünschen, stellen Sie eine Frage.
Cade Roux
Hier ist die Frage: raspberrypi.stackexchange.com/questions/1531/… :)
Zlatko

Antworten:

8
$ uname -a
Linux raspberrypi 3.1.9+ #174 PREEMPT Sun Jul 22 19:04:28 BST 2012 armv6l GNU/Linux
John La Rooy
quelle
7

Versuchen

cat /etc/*-release

Auf meinem Desktop gibt es

NAME="Arch Linux"
ID=arch
PRETTY_NAME="Arch Linux"
ANSI_COLOR="0;36"
HOME_URL="https://www.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"

Nachdem Sie die offiziellen Raspberry Pi-Bilder (Raspbian und Arch) überprüft haben, /etc/os-releasesind beide verfügbar und enthalten mindestens die Eigenschaften NAME und PRETTY_NAME.

Wie extrahiere ich den Namen der Distribution?

Das ist ganz einfach, versuchen Sie es

$ cat /etc/os-release | perl -n -e '/^NAME=\"([a-zA-Z ]*)\"$/ && print "$1\n"'
Arch Linux

Verweise

  1. HowTo: Finden Sie den Namen und die Version meiner Linux-Distribution heraus
Alex Chamberlain
quelle
Sieht gut aus. Letztendlich spielt es keine Rolle, ob dies wirklich universell ist, solange es für die fraglichen Distributionen funktioniert. Und es wäre einfach, eine eigene Datei im Dateisystem abzulegen, wenn Sie mit einer experimentieren würden, die diese standardmäßig nicht hat.
Chris Stratton
4

Wie bereits erwähnt, können Sie verwenden uname, dies zeigt jedoch nur die Kernel-Version an. Wenn Sie dieselbe Kernel-Version auf mehreren verschiedenen Distributionen / Karten haben (was sehr wahrscheinlich ist, da einige von ihnen denselben Foundation-Kernel verwenden), erhalten Sie für jeden das gleiche Ergebnis. Die beste Möglichkeit, zwischen Distributionen zu unterscheiden, besteht darin, etwas anderes als den Kernel zu verwenden. Es gibt jedoch keinen universellen Weg. Eine einfache Möglichkeit wäre, den Hostnamen zu verwenden (und ihn für jede Distribution zu ändern).

cat / proc / version / proc / sys / kernel / hostname

oder

Hostname && uname -a

Krzysztof Adamski
quelle
cat / proc / version / proc / sys / kernel / hostname
Krzysztof Adamski
Hostname && uname -a (vorausgesetzt, Hostname funktioniert - pi wird zur Zeit nicht gebootet, um dies zu überprüfen)
Chris Stratton