Linux: определить версию

При работе различных скриптов один из пунктов  требуется определение версию Linux под которой работать. Сценариев множество, от определения совместимости, до изменения поведения скрипта.

LSB (Linux Standard Base)

lsb_release -a

Покажет всю информацию:

lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster

/etc/issue

cat /etc/issue

в файле /etc/issue содержится текст с идентификацией системы.

#cat /etc/issue
Debian GNU/Linux 10 \n \l

Работает на Debian, в CentOS выдаст не самую полезную информацию

#cat /etc/issue
\S
Kernel \r on an \m

/etc/os-release

В фале /etc/os-release содержится вся необходимая информация

cat /etc/os-release

Пример:

#cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

Так как данные представлю собой переменные Bash, то довольно просто их можно использовать в скрипте, без необходимости парсинга значений.

#!/bin/bash
. /etc/os-release
echo $PRETTY_NAME

hostnamectl

команда hostnamectl помимо информации о хосте, так же возвращает информацию о системе

hostnamectl

Пример вывода:

# hostnamectl
Static hostname: stand-13
Icon name: computer-vm
Chassis: vm
Machine ID: df659833381e45b78288274dd70ece1a
Boot ID: ee6fc1d7482b864e80f53ba328e9abd8
Virtualization: kvm
Operating System: Debian GNU/Linux 10 (buster)
Kernel: Linux 4.19.0-17-amd64
Architecture: x86-64
(Visited 3 times, 1 visits today)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *