Come accedo al nome della distribuzione dalla riga di comando?


12

Ho diverse distro con cui sto giocando. Etichetta le schede SD, ma:

  1. Sono sottosopra
  2. Di solito sono in un'altra stanza dall'RPi

Ho impostato un servizio in init.d che mi fa sapere tramite Pushover quando il mio Pi si sta spegnendo o si sta avviando (usando l'API tramite curl).

Vorrei che questo includesse quale distro sto attualmente utilizzando.

Riesco a vedere sul mio ultimo avvio (giocando con adafruit Raspbian):

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

Come posso ottenere tali informazioni da includere nel mio script?

Ho installato lsb-release, ma questo mi dà solo questo:

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

Che sarebbe uguale al mio Raspbian normale.

Inoltre, probabilmente vorrei indicare qualcosa sulla specifica istanza sulla scheda SD (dal momento che probabilmente avrò multipli della stessa distribuzione di base). Ovviamente, posso semplicemente rilasciare un file nello stesso posto su ogni scheda SD, ma esiste una convenzione per dove mettere quel tipo di informazioni?


Wow Fico. Puoi indicare come hai messo insieme quella cosa pushover / init.d? Ti farò una domanda se risponderai :)
Zlatko

@zladuric Iscriviti a pushover.net per un account. L'API di arricciatura è piuttosto semplice. Ho impostato un semplice script in init.d come "servizio" e invia semplicemente diverse notifiche all'avvio / arresto. Tecnicamente si tratta di una notifica di stop start, quindi se mai ottiene "start" invierà una notifica. In pratica, nulla li avvia o arresta tranne l'avvio e l'arresto. Se vuoi il codice completo, vai avanti e pubblica una domanda.
Cade Roux,

Risposte:


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

7

Provare

cat /etc/*-release

Sul mio desktop, dà

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

Dopo aver verificato le immagini ufficiali di Raspberry Pi (Raspbian e Arch), /etc/os-releaseè disponibile su entrambi e contiene almeno le proprietà NAME e PRETTY_NAME.

Come estraggo il nome della distribuzione?

È abbastanza semplice, prova

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

Riferimenti

  1. HowTo: Scopri il nome e la versione della mia distribuzione Linux

Sembra buono. In definitiva, non importa se questo è veramente universale, purché funzioni per le distribuzioni in questione. E sarebbe facile mettere il proprio file sul filesystem se si sperimenta con uno che non lo ha di default.
Chris Stratton,

4

Come sottolineato, puoi usare uname, ma questo mostrerà solo la versione del kernel. Se hai la stessa versione del kernel su un paio di diverse distribuzioni / carte (il che è molto probabile poiché un paio di loro usano lo stesso kernel di fondazione), otterrai lo stesso risultato per ognuna di esse. Quindi il modo migliore per differenziare le distro è usare qualcosa di diverso dal kernel. Non esiste un modo universale tuttavia. Un modo semplice sarebbe usare il nome host (e cambiarlo per ogni distro).

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

o

nome host && uname -a


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

nome host && uname -a (supponendo che il nome host funzioni - al momento il pi non è avviato per verificare)
Chris Stratton
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.