Как получить доступ к имени дистрибутива в командной строке?

12

У меня есть несколько дистрибутивов, с которыми я играю. Я маркирую SD-карты, но:

  1. Они в перевернутом положении
  2. Я обычно в другой комнате от RPi

Я установил сервис в init.d, который позволяет мне узнать через Pushover, когда мой Pi выключается или запускается (используя API через curl).

Я хотел бы, чтобы это включало дистрибутив, который я сейчас использую.

Я вижу на моей последней загрузке (игра с Adafruit Raspbian):

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

Как я могу получить эту информацию для включения в мой сценарий?

Я установил lsb-release, но это только дает мне это:

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

Который выглядел бы так же, как мой обычный Распбиан.

Кроме того, я, вероятно, хотел бы указать что-то сам о конкретном экземпляре на SD-карте (поскольку у меня, вероятно, будет несколько одинаковых базовых дистрибутивов). Очевидно, я могу просто поместить файл в одно и то же место на каждой SD-карте, но существует ли соглашение о том, где размещать такую ​​информацию?

Кейд Ру
источник
Вау круто. Можете ли вы указать, как вы собрали эту вещь pushover / init.d? Я задам вопрос, если вы ответите на него :)
Златко
@zladuric Зарегистрируйте аккаунт на pushover.net. API curl довольно прост. Я установил простой скрипт в init.d как «сервис», и он просто отправляет разные уведомления при запуске / остановке. Технически это уведомление о начале и остановке, поэтому, если он когда-либо получит «старт», он отправит уведомление. На практике ничто не запускает и не останавливает их, кроме загрузки и выключения. Если вам нужен полный код, отправьте вопрос.
Кейд Ру
вот вопрос: raspberrypi.stackexchange.com/questions/1531/… :)
Златко

Ответы:

8
$ uname -a
Linux raspberrypi 3.1.9+ #174 PREEMPT Sun Jul 22 19:04:28 BST 2012 armv6l GNU/Linux
Джон Ла Рой
источник
7

Пытаться

cat /etc/*-release

На моем рабочем столе это дает

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

Проверив официальные изображения Raspberry Pi (Raspbian и Arch), /etc/os-releaseон доступен на обоих и содержит как минимум свойства NAME и PRETTY_NAME.

Как извлечь имя дистрибутива?

Это довольно просто, попробуйте

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

Ссылки

  1. Как: узнать имя и версию моего дистрибутива Linux
Алекс Чемберлен
источник
Выглядит хорошо. В конечном счете, не имеет значения, является ли это действительно универсальным, если оно работает для рассматриваемых дистрибутивов. И было бы легко поместить свой собственный файл в файловую систему, если экспериментирует с тем, у которого его нет по умолчанию.
Крис Страттон
4

Как уже указывалось, вы можете использовать uname, но это покажет только версию ядра. Если у вас одна и та же версия ядра на нескольких разных дистрибутивах / картах (что весьма вероятно, поскольку пара из них использует одно и то же базовое ядро), вы получите одинаковый результат для каждого из них. Таким образом, лучший способ отличить дистрибутивы - это использовать что-то, кроме ядра. Однако универсального пути не существует. Одним простым способом было бы использовать имя хоста (и изменять его для каждого дистрибутива).

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

или

имя хоста && uname -a

Кшиштоф Адамски
источник
cat / proc / version / proc / sys / kernel / hostname
Кшиштоф Адамски
имя хоста && uname -a (при условии, что имя хоста работает - пи не загружается для проверки в данный момент)
Крис Страттон