Як отримати доступ до імені дистрибутива в командному рядку?


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-реліз, але це дає мені лише це:

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

Що буде виглядати так само, як мій звичайний Raspbian.

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


Нічого собі, круто. Чи можете ви вказати на те, як ви зібрали цю штучку "push" / init.d? Я запитаю питання, якщо ви відповісте на нього :)
Златко

@zladuric Зареєструйтесь на pushover.net для отримання акаунта. API завивки досить простий. Я створив простий скрипт в init.d як "послугу", і він просто надсилає різні повідомлення про старт / зупинку. Технічно це повідомлення про стартову зупинку, тож якщо воно коли-небудь отримає "старт", воно надішле сповіщення. На практиці їх нічого не запускає і не зупиняє, крім завантаження та відключення. Якщо ви хочете повний код, продовжуйте і розміщуйте питання.
Кейд Ру

Відповіді:



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. HowTo: Дізнайтеся моє ім'я дистрибутива та версію Linux

Виглядає добре. Зрештою, не має значення, чи справді це універсально, якщо це працює для розглянутих дистрибутивів. І було б легко помістити власний файл у файлову систему, якщо експериментувати з тим, у якого його немає за замовчуванням.
Кріс Страттон

4

Як зазначалося, ви можете використовувати uname, але це покаже лише версію ядра. Якщо у вас однакова версія ядра на декількох різних дистрибутивах / картах (що дуже ймовірно, оскільки пара з них використовує одне і те ж ядро ​​основи), ви отримаєте однаковий результат для кожної з них. Тож найкращий спосіб розмежувати дистрибутив - це використовувати щось інше, ніж ядро. Однак немає універсального способу. Одним із простих способів було б використовувати ім'я хоста (та змінити його для кожного дистрибутива).

cat / proc / версія / proc / sys / ядро ​​/ ім'я хоста

або

ім'я хоста && uname -a


cat / proc / версія / proc / sys / ядро ​​/ ім'я хоста
Krzysztof Adamski

hostname && uname -a (якщо припустимо, що ім'я хоста працює - pi наразі не завантажується для перевірки)
Chris Stratton
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.