Como acesso o nome da distribuição na linha de comando?


12

Eu tenho várias distros com as quais estou tocando. Eu rotulo os cartões SD, mas:

  1. Eles estão de cabeça para baixo
  2. Normalmente, estou em outra sala do RPi

Configurei um serviço no init.d que me informa via Pushover quando meu Pi é desligado ou inicializado (usando a API via curl).

Gostaria que isso incluísse a distribuição que estou usando no momento.

Posso ver na minha última inicialização (brincando com o adafruit Raspbian):

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

Como posso incluir essas informações no meu script?

Eu instalei o lsb-release, mas isso só me dá o seguinte:

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

O que seria igual ao meu Raspbian comum.

Além disso, eu provavelmente gostaria de indicar algo sobre a instância específica no cartão SD (já que provavelmente terei várias da mesma distribuição base). Obviamente, eu posso simplesmente soltar um arquivo no mesmo local em cada cartão SD, mas existe uma convenção sobre onde colocar esse tipo de informação?


Uau legal. Você pode apontar como você montou essa coisa de pushover / init.d? Eu vou fazer uma pergunta se você vai respondê-la :)
Zlatko

@zladuric Cadastre-se em pushover.net para obter uma conta. A API de curl é bastante simples. Configurei um script simples no init.d como um "serviço" e ele simplesmente envia notificações diferentes ao iniciar / parar. Tecnicamente, é uma notificação de parada inicial, por isso, se alguma vez for "iniciada", ela enviará uma notificação. Na prática, nada os inicia ou interrompe, exceto a inicialização e o desligamento. Se você quiser o código completo, vá em frente e poste uma pergunta.
precisa saber é o seguinte

Respostas:


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

7

Experimentar

cat /etc/*-release

Na minha área de trabalho, 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/"

A verificação das imagens oficiais do Raspberry Pi (Raspbian e Arch) /etc/os-releaseestá disponível em ambas e contém pelo menos as propriedades NAME e PRETTY_NAME.

Como extraio o nome da distribuição?

Isso é bem simples, tente

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

Referências

  1. HowTo: Descubra meu nome e versão de distribuição do Linux

Parece bom. Por fim, não importa se isso é verdadeiramente universal, desde que funcione para as distribuições em questão. E seria fácil colocar o próprio arquivo no sistema de arquivos se você experimentasse um que não o tenha por padrão.
22812 Chris Stratton

4

Como apontado, você pode usar uname, mas isso mostrará apenas a versão do kernel. Se você possui a mesma versão do kernel em algumas distribuições / placas diferentes (o que é muito provável, já que algumas delas estão usando o mesmo kernel básico), você obterá o mesmo resultado para cada uma delas. Portanto, a melhor maneira de diferenciar as distribuições é usar algo diferente do kernel. Não existe um caminho universal, no entanto. Uma maneira fácil seria usar o nome do host (e alterá-lo para cada distribuição).

cat / proc / versão / proc / sys / kernel / nome do host

ou

hostname && uname -a


O arquivo cat / proc / version / proc / sys / kernel / hostname
Krzysztof Adamski (

hostname && uname -a (assumindo hostname funciona - pi não é inicializado para verificar no momento)
Chris Stratton
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.