Qual versão do RHEL estou usando?

145

A partir do shell e sem privilégios de root, como posso determinar qual versão do Red Hat Enterprise Linux estou executando?

Idealmente, gostaria de obter a versão principal e secundária, por exemplo, RHEL 4.0 ou RHEL 5.1, etc.

    
por Arthur Ulfeldt 01.12.2009 / 02:59

9 respostas

146

Você pode usar o comando lsb_release em várias distribuições do Linux:

lsb_release -i -r 

Isto lhe dirá a Distribuição e Versão e é um pouco mais preciso do que acessar arquivos que podem ou não ter sido modificados pelo administrador ou por um pacote de software. Além de trabalhar em várias distros.

Para o RHEL, você deve usar:

cat /etc/redhat-release
    
por 01.12.2009 / 07:47
140

Você pode ver o conteúdo de / etc / redhat-release, que será parecido com isto:

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

O conteúdo é diferente para um sistema RHEL real. Esta técnica funciona em todos os derivados do RedHat, incluindo o CentOS, o Fedora e outros.

    
por 01.12.2009 / 03:13
24

Eu prefiro usar o arquivo / etc / issue.

$ cat /etc/issue

Eu já vi muitas situações em que o / etc / redhat-release foi modificado para atender aos requisitos de compatibilidade de software (Dell ou agentes de gerenciamento da HP, por exemplo).

    
por 01.12.2009 / 06:35
12

A maneira mais confiável quando lsb_release não está instalado é:

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

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

Em instalações mínimas, lsb_release está ausente.

Para que isso funcione também com os clones da Red Hat (o crédito vai para comentários):

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

Ou como um único comando (em vez de dois "rpm" sendo executados):

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

Use sed / cut e outro texto manipulando ferramentas do UNIX para obter o que você deseja.

    
por 05.06.2013 / 13:15
5

Supondo que seja um lançamento da Red Hat (não o Centos):

rpm -q redhat-release

Ou apenas execute:

uname -r

E mapeie a saída. 2.6.9 kernels são RHEL4, 2.6.18 kernels são RHEL5. Se necessário, você pode mapear a versão completa para as versões de atualização específicas da Red Hat (por exemplo, 2.6.9-89 é RHEL5 U4).

    
por 01.12.2009 / 14:36
1

Eu gosto bastante de usar o arquivo /etc/os-release , que está no RPM de lançamento:

# 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

Este arquivo pode ser originado em scripts, como:

$ source /etc/os-release
$ echo $NAME
CentOS Linux
$ echo $VERSION
7 (Core)
    
por 23.01.2018 / 21:28
1

Eu prefiro 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
    
por 04.10.2018 / 09:14
0

Se você quiser apenas obter os números de versão, o seguinte é o mais curto e simples possível.

Testado em rhel 6.7, rhel 7.2, debian 8.3 e ubuntu 14.04:

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

Para um exemplo prático, digamos que você queira testar a versão principal e secundária da distribuição e fazer as coisas com base nisso:

#!/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
    
por 06.04.2016 / 02:44
0

Uma chegada tardia a isso, mas me diverti tentando descobrir a versão RHEL em vários nós remotos. Então, se você tem um lote de servidores que usam a mesma senha (eu sei, eu sei ...) aqui é um pouco rápido e sujo verificar a versão RedHat:

Crie um script de expectativa

vim server-version.sh

Espere que o script verifique a versão principal do RedHat em vários hosts remotos

#!/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"

Execute o script para todos os seus nós

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

Resultado

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 ~]#

...
    
por 05.10.2017 / 14:31