Вопрос: Какую версию RHEL я использую?


Из оболочки и без привилегий root, как я могу определить, какую версию Red Hat Enterprise Linux я запускаю?

В идеале я бы хотел получить как основную, так и младшую версию, например RHEL 4.0 или RHEL 5.1 и т. Д.


136
2017-12-01 01:59


Источник




Ответы:


Вы можете использовать lsb_release команда в различных дистрибутивах Linux:

lsb_release -i -r 

Это расскажет вам о распространении и версии и немного точнее, чем доступ к файлам, которые могут быть изменены или не были изменены администратором или программным пакетом. Помимо работы с несколькими дистрибутивами.

Для RHEL вы должны использовать:

cat /etc/redhat-release

138
2017-12-01 06:47



команда не найдена на моем ящике CentOS 5.4 :( - gbjbaanb
@gbjbaanb: Это странно, я тестировал его на свежей 5.4 минимальной установке, и он работал просто отлично ... - Zypher
lsb_release -i -r -bash: lsb_release: команда не найдена. Однако, cat /etc/redhat-release Red Hat Enterprise Linux Server выпуска 5.6 (Tikanga) - Tom
Только для записи: не работает на минимальной установке RHEL 6.5. Команда lsb_release нигде не найдена. - sborsky
lsb_release не является легким пакетом, он тянет в CUPS, чтобы предоставить '/ usr / bin / lp', который тянет в какой-нибудь переводчик pdf, который тянет в некоторые библиотеки для воспроизведения ... - Jens Timmerman


Вы можете посмотреть содержимое / etc / redhat-release, которое будет выглядеть примерно так:

$ cat /etc/redhat-release 
CentOS release 5.4 (Final)

Содержимое отличается для реальной системы RHEL. Этот метод работает на всех производных RedHat, включая CentOS, Fedora и другие.


137
2017-12-01 02:13



Это наиболее подходящий ответ на вопрос. - fsoppelsa
lsb_release это первое, что нужно попробовать, но поскольку это может не быть установлено, глядя на файлы, это хороший план B. - chicks
@chicks Учитывая, что вопрос запрашивает тест для систем Redhat, а lsb_release не устанавливается по умолчанию на системах redhat и / etc / redhat-release, то lsb_release, очевидно, не первое, что нужно попробовать! - bye


Я предпочитаю использовать файл / etc / issue.

$ cat /etc/issue

Я видел много ситуаций, когда / etc / redhat-release была изменена для соответствия требованиям совместимости программного обеспечения (например, агентами управления Dell или HP).


25
2017-12-01 05:35



/etc/issue также работает и на других ОС, таких как Debian & Ubuntu, и работает с ОС Linux, которые не соответствуют базе стандартов Linux и легким операционным системам, которые не имеют установленных утилит lsb *. - Stefan Lasiewski
Это ненадежно. По всей видимости /etc/issue подлежит анализу agetty, который заменяет управляющие последовательности соответствующей информацией. Если вы просто cat это, результат может быть неудобным. На Fedora можно получить Fedora release 20 (Heisenbug) Kernel \r on an \m (\l), который говорит вам что-то, но на RHEL7, \S Kernel \r on an \m, - David Tonhofer


Самый надежный способ когда  lsb_release  не установлен является:

# rpm -q --queryformat '%{VERSION}' redhat-release-server
6Server

# rpm -q --queryformat '%{RELEASE}' redhat-release-server
6.4.0.4.el6

При минимальных установках, lsb_release пропал, отсутствует.

Чтобы это работало также с клонами Red Hat (кредит идет на комментарии):

# rpm -q --queryformat '%{VERSION}' $(rpm -qa '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)')

Или, как одна команда (вместо двух «rpm») выполняется:

# rpm -qa --queryformat '%{VERSION}\n' '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)'

использование sed/cut и другие текстовые манипуляции с инструментами UNIX, чтобы получить то, что вы хотите.


13
2018-06-05 11:15



Это, похоже, работает, в более общем плане: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'  sl для Scientific Linux; если вы знаете правильное имя для других перестроек RHEL, возможно, комментарий ниже. Предупреждение - не подвергается обширной проверке. - Dan Pritts
Да, спасибо, одно замечание: не работает с RHEL Worstation. - lzap
Одна заметка - это работает намного медленнее, чем синтаксический анализ / etc / foo-release. - Dan Pritts
или rpm -qa | grep release еще проще - warren


Предполагая, что это действительно релиз Red Hat (не Centos):

rpm -q redhat-release

Или просто запустите:

uname -r

И отобразите вывод. 2.6.9 ядра - RHEL4, ядра 2.6.18 - RHEL5. При необходимости вы можете сопоставить полную версию с конкретными версиями обновлений от Red Hat (то есть 2.6.9-89 - RHEL5 U4).


5
2017-12-01 13:36



rpm -q redhat-release просто возвращается package redhat-release is not installed для меня и uname -r просто говорит мне о выпуске ядра. - Mark Booth
Ой ! И теперь, когда прошло время, что будет RHEL6? RHEL7? Hum ... Вот ответы: access.redhat.com/articles/3078#RHEL7 - mika


Если вы хотите просто получить номера версий, то это краткое и простое, как я могу это получить.

Протестировано на rhel 6.7, rhel 7.2, debian 8.3 и ubuntu 14.04:

lsb_release -s -r | cut -d '.' -f 1

Для практического примера, скажем, вы хотите протестировать основную и второстепенную версию распространения и сделать что-то на основе этого:

#!/bin/bash

major=$(lsb_release -s -r | cut -d '.' -f 1)
minor=$(lsb_release -s -r | cut -d '.' -f 2)

if (( "$major" >= 7 ))
then
  echo "Do stuff, OS major version is $major"
  echo "OS minor version is $minor"
else
  echo "Do other things"
  echo "Your version is $major.$minor"
fi

0
2018-04-06 00:44





Поздний приход к этому, но мне было весело, пытаясь выяснить версию RHEL на нескольких удаленных узлах. Итак, если у вас есть группа серверов, которые используют один и тот же пароль (я знаю, я знаю ...), здесь быстро и грязно проверять версию RedHat:

Создать сценарий ожидания

vim server-version.sh

Ожидайте, что скрипт проверяет основную версию RedHat на нескольких удаленных хостах

#!/usr/bin/expect
log_user 0
spawn ssh -l root [lindex $argv 0]
expect "assword:"
send "sUp3rS3cr3tP4ssW0rd^\r"
expect "# "
log_user 1
send "cat /etc/redhat-release\r"
expect "*#"
log_user 0
send "exit\n"

Запустите скрипт для всех ваших узлов

[root@home ~]#
for server in server1 server2 server3 server4 server5; do echo -e "$server: \c"; /root/server-version.sh $server; echo; echo; done;

Вывод

server1: cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
[root@server1 ~]#

server2: cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
[root@server2 ~]#

...

0
2017-10-05 12:31



Если вы собираетесь делать удаленные материалы на многих машинах, я настоятельно рекомендую использовать сценарии с использованием Ansible, а не с ручными скриптами bash. - Neil Mayhew
Я также рекомендую не разрешать вход root через ssh - Neil Mayhew


Мне очень нравится использовать /etc/os-release файл, который находится в RPM выпуска:

# yum whatprovides /etc/os-release 
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
 * base: dl.za.jsdaav.net
 * extras: dl.za.jsdaav.net
 * updates: dl.za.jsdaav.net
centos-release-7-4.1708.el7.centos.x86_64 : CentOS Linux release file
Repo        : base
Matched from:
Filename    : /etc/os-release

centos-release-7-4.1708.el7.centos.x86_64 : CentOS Linux release file
Repo        : @anaconda
Matched from:
Filename    : /etc/os-release

Этот файл можно найти в сценариях, например:

$ source /etc/os-release
$ echo $NAME
CentOS Linux
$ echo $VERSION
7 (Core)

0
2018-01-23 20:28



Интересно, полезно. К сожалению, на данный момент RHEL6 отсутствует на ограниченной стоимости. - Dan Pritts