Яку версію RHEL я використовую?


151

Як я можу визначити, з якою версією Red Hat Enterprise Linux я працюю, з оболонки та без привілеїв root?

В ідеалі я хотів би отримати як основну, так і другорядну версію, наприклад RHEL 4.0 або RHEL 5.1 тощо.

Відповіді:


154

Ви можете використовувати lsb_releaseкоманду в різних дистрибутивах Linux:

lsb_release -i -r 

Це повідомить вам про розповсюдження та версію і трохи точніше, ніж доступ до файлів, які можуть бути або не можуть бути змінені адміністратором чи програмним пакетом. А також робота в декількох дистрибутивах.

Для RHEL слід використовувати:

cat /etc/redhat-release

5
команда не знайдена в моєму вікні CentOS 5.4 :(
gbjbaanb

@gbjbaanb: Це дивно, що я перевірив його на свіжому 5.4 мінімальному встановленні, і він працював чудово ...
Zypher

26
lsb_release -i -r-bash: lsb_release: команда не знайдена. Однак cat /etc/redhat-releaseвипуск Red Hat Enterprise Linux Server 5.6 (Tikanga)
Том

7
Тільки для запису: не працює на мінімальній установці RHEL 6.5. Команди lsb_release ніде не знайдено.
сборський

4
lsb_release не є легким пакетом, він вимагає в CUPS, щоб надати "/ usr / bin / lp", який втягує деяку програму перекладу PDF, яка тягне в деяких бібліотеках візуалізації ...
Jens Timmerman,

142

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

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

Зміст відрізняється від фактичної системи RHEL. Ця методика працює на всіх похідних RedHat, включаючи CentOS, Fedora та інші.


14
Це найбільш відповідна відповідь на питання.
fsoppelsa

lsb_releaseце перше, що потрібно спробувати, але оскільки це може бути не встановлено, дивлячись на файли, це гарний план B.
пташенята

1
@chicks З огляду на те, що питання задає тест для систем Redhat, а lsb_release не встановлено за замовчуванням у системах redhat та / etc / redhat-release, то lsb_release, очевидно, не перше, що потрібно спробувати!
до побачення

@bye Це перше, що потрібно спробувати (принаймні, на мою думку), ви завжди спершу випробовуєте речі, які повинні бути загальними для всіх дистрибутивів, тоді лише ви переходите на конкретні рішення щодо розподілу.
Денніс Нолте

25

Я вважаю за краще використовувати файл / etc / issue.

$ cat /etc/issue

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


1
/etc/issueтакож працює і на інших ОС, таких як Debian & Ubuntu, і працює з ОС Linux, які не відповідають базі стандартів Linux, і легких ОС, на яких не встановлені утиліти lsb *.
Стефан Ласєвський

5
Це не є надійним. Мабуть /etc/issue, мається на увазі проаналізувати agetty , який замінює послідовності втечі належною інформацією. Якщо ви просто catце, результат може бути корисним. У Fedora виходить один Fedora release 20 (Heisenbug) Kernel \r on an \m (\l), який вам щось говорить, але на RHEL7, один просто отримує \S Kernel \r on an \m.
Девід Тонхофер

Зауважте, що він /etc/issueможе бути замінений місцевим адміністратором, а значить, не є надійним джерелом інформації.
larsks

13

Найнадійніший спосіб, коли 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, щоб отримати те, що ви хочете.


2
Це, здається, працює в більш загальному плані: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)' sl призначений для Scientific Linux; якщо ви знаєте правильну назву для інших відновлень RHEL, можливо, прокоментуйте нижче. Попередження - не перевірено широко.
Dan Pritts

1
Так, дякую, одна примітка: не працює з RHEL Worstation.
lzap

Одна примітка - це працює набагато повільніше, ніж розбір / etc / foo-release.
Ден Пріттс

1
або rpm -qa | grep releaseще простіше
warren

6

Якщо припустити, що це справді - випуск 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).


1
rpm -q redhat-releaseпросто повертається package redhat-release is not installedдля мене і uname -rпросто повідомляє мені про вихід ядра.
Марк Бут

Ой! А тепер, коли минув час, що було б RHEL6? RHEL7? Гум ... Ось відповіді: access.redhat.com/articles/3078#RHEL7
mika

3

Я віддаю перевагу hostnamectl:

$ hostnamectl
   Static hostname: xxxxxx.xxx.xxx
         Icon name: computer-server
           Chassis: server
        Machine ID: 3e3038756eaf4c5c954ec3d24f35b13f
           Boot ID: 958452e0088b4191a4ea676ebc90403b
  Operating System: Red Hat Enterprise Linux Server 7.5 (Maipo)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.5:GA:server
            Kernel: Linux 3.10.0-862.3.3.el7.x86_64
      Architecture: x86-64

2

Мені дуже подобається використовувати /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)

Цікаве, корисне. На жаль, наразі немає на RHEL6 настільки обмеженого значення.
Dan Pritts

1

Якщо ви хочете просто отримати номери версій, наступне приблизно таке ж коротке і просте, як я можу його отримати.

Тестовано на 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

1

Пізній прихід до цього, але мені було весело, намагаючись з’ясувати версію 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 ~]#

...

Якщо ви збираєтеся робити віддалені речі на багатьох машинах, я настійно рекомендую використовувати Ansible, а не ручні проскакані скрипти.
Ніл Мейхью

Я також рекомендую не вмикати корінний вхід через ssh
Neil Mayhew
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.