Comment accéder au nom de la distribution sur la ligne de commande?


12

J'ai un certain nombre de distributions avec lesquelles je joue. J'étiquette les cartes SD, mais:

  1. Ils sont à l'envers
  2. Je suis généralement dans une autre pièce du RPi

J'ai mis en place un service dans init.d qui me permet de savoir via Pushover lorsque mon Pi s'arrête ou démarre (en utilisant l'API via curl).

J'aimerais que cela inclue la distribution que j'utilise actuellement.

Je peux voir sur mon dernier démarrage (jouer avec adafruit Raspbian):

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

Comment puis-je obtenir ces informations à inclure dans mon script?

J'ai installé lsb-release, mais cela ne me donne que ceci:

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

Ce qui ressemblerait à mon Raspbian habituel.

De plus, je voudrais probablement indiquer moi-même quelque chose à propos de l'instance particulière sur la carte SD (car j'aurai probablement plusieurs de la même distribution de base). Évidemment, je peux simplement déposer un fichier au même endroit sur chaque carte SD, mais existe-t-il une convention pour savoir où mettre ce type d'informations?


Wow cool. Pouvez-vous nous expliquer comment avez-vous créé ce truc pushover / init.d? Je vais poser une question si vous y répondez :)
Zlatko

@zladuric Inscrivez-vous sur pushover.net pour créer un compte. L'API curl est assez simple. J'ai mis en place un script simple dans init.d en tant que "service" et il envoie simplement différentes notifications au démarrage / arrêt. Techniquement, il s'agit d'une notification de démarrage / arrêt, donc si jamais elle démarre, elle enverra une notification. En pratique, rien ne les démarre ni ne les arrête sauf le démarrage et l'arrêt. Si vous voulez le code complet, allez-y et postez une question.
Cade Roux

Réponses:


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

7

Essayer

cat /etc/*-release

Sur mon bureau, ça donne

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/"

Après avoir vérifié les images officielles du Raspberry Pi (Raspbian et Arch), /etc/os-releaseest disponible sur les deux et contient au moins les propriétés NAME et PRETTY_NAME.

Comment extraire le nom de la distribution?

C'est assez simple, essayez

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

Les références

  1. Comment: découvrir le nom et la version de ma distribution Linux

Cela semble bon. En fin de compte, peu importe si c'est vraiment universel, tant qu'il fonctionne pour les distributions en question. Et il serait facile de mettre son propre fichier sur le système de fichiers si on en expérimente un qui ne l'a pas par défaut.
Chris Stratton

4

Comme indiqué, vous pouvez utiliser uname, mais cela n'affichera que la version du noyau. Si vous avez la même version de noyau sur deux distributions / cartes différentes (ce qui est très probable car deux d'entre elles utilisent le même noyau de fondation), vous obtiendrez le même résultat pour chacune d'entre elles. Ainsi, la meilleure façon de différencier les distributions est d'utiliser autre chose que le noyau. Il n'y a cependant pas de voie universelle. Un moyen simple serait d'utiliser le nom d'hôte (et de le changer pour chaque distribution).

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

ou

nom d'hôte && uname -a


cat / proc / version / proc / sys / kernel / hostname
Krzysztof Adamski

nom d'hôte && uname -a (en supposant que le nom d'hôte fonctionne - pi n'est pas démarré pour vérifier pour le moment)
Chris Stratton
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.