При работе различных скриптов один из пунктов требуется определение версию Linux под которой работать. Сценариев множество, от определения совместимости, до изменения поведения скрипта.
LSB (Linux Standard Base)
1 | lsb_release -a |
Покажет всю информацию:
1 2 3 4 5 6 | lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster |
/etc/issue
1 | cat /etc/issue |
в файле /etc/issue содержится текст с идентификацией системы.
1 2 | #cat /etc/issue Debian GNU/Linux 10 \n \l |
Работает на Debian, в CentOS выдаст не самую полезную информацию
1 2 3 | #cat /etc/issue \S Kernel \r on an \m |
/etc/os-release
В фале /etc/os-release содержится вся необходимая информация
1 | cat /etc/os-release |
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #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, то довольно просто их можно использовать в скрипте, без необходимости парсинга значений.
1 2 3 | #!/bin/bash . /etc/os-release echo $PRETTY_NAME |
hostnamectl
команда hostnamectl помимо информации о хосте, так же возвращает информацию о системе
1 | hostnamectl |
Пример вывода:
1 2 3 4 5 6 7 8 9 10 | # 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 |