Pregunta ¿Qué versión de RHEL estoy usando?


Desde el shell y sin privilegios de root, ¿cómo puedo determinar qué versión de Red Hat Enterprise Linux estoy ejecutando?

Idealmente, me gustaría obtener la versión de lanzamiento principal y secundaria, por ejemplo, RHEL 4.0 o RHEL 5.1, etc.


142
2017-12-01 01:59


origen




Respuestas:


Puedes usar el lsb_release comando en varias distribuciones de Linux:

lsb_release -i -r 

Esto le indicará la Distribución y la Versión y es un poco más preciso que acceder a archivos que pueden haber sido modificados o no por el administrador o un paquete de software. Así como trabajar a través de múltiples distros.

Para RHEL, debes usar:

cat /etc/redhat-release

144
2017-12-01 06:47



comando no encontrado en mi caja de CentOS 5.4 :( - gbjbaanb
@gbjbaanb: Es extraño, lo probé en una instalación mínima de 5.4 y funcionó bien ... - Zypher
lsb_release -i -r -bash: lsb_release: comando no encontrado. Sin embargo, cat /etc/redhat-release Red Hat Enterprise Linux Server versión 5.6 (Tikanga) - Tom
Solo para el registro: no funciona en la instalación mínima de RHEL 6.5. El comando lsb_release no se encuentra en ninguna parte. - sborsky
lsb_release no es un paquete liviano, tira CUPS para proporcionar ‘/ usr / bin / lp’, que extrae un error de traducción de PDF, que extrae algunas bibliotecas de renderizado ... - Jens Timmerman


Puedes mirar el contenido de / etc / redhat-release, que se verá así:

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

Los contenidos son diferentes para un sistema RHEL real. Esta técnica funciona en todos los derivados de RedHat, incluidos CentOS, Fedora y otros.


140
2017-12-01 02:13



Esta es la respuesta más apropiada a la pregunta. - fsoppelsa
lsb_release es lo primero que debe intentar, pero dado que es posible que no se instale mirando los archivos es un buen Plan B. - chicks
@chicks Dado que la pregunta pide una prueba para los sistemas Redhat, y lsb_release no se instala de forma predeterminada en los sistemas redhat y / etc / redhat-release, entonces, obviamente, ¡lsb_release no es lo primero que debe intentar! - bye
@bye Es lo primero que se debe intentar (al menos en mi opinión), siempre se intentan las cosas que deberían ser comunes en todas las distribuciones primero, luego solo se cambia a soluciones específicas de distribución. - Dennis Nolte


Prefiero usar el archivo / etc / issue.

$ cat /etc/issue

He visto muchas situaciones donde / etc / redhat-release ha sido modificado para cumplir con los requisitos de compatibilidad de software (por ejemplo, los agentes de administración de Dell o HP).


24
2017-12-01 05:35



/etc/issue también funciona en otros sistemas operativos, como Debian y Ubuntu, y funciona con sistemas operativos Linux que no se ajustan a la Base de estándares de Linux, y sistemas operativos ligeros que no tienen las utilidades lsb * instaladas. - Stefan Lasiewski
Esto no es confiable. Aparentemente /etc/issue está destinado a ser analizado por agetty, que reemplaza las secuencias de escape con información adecuada. Si tu solo cat El resultado puede ser decepcionante. En Fedora, uno obtiene Fedora release 20 (Heisenbug) Kernel \r on an \m (\l), que te dice algo, pero en RHEL7, uno se pone \S Kernel \r on an \m. - David Tonhofer
Tenga en cuenta que /etc/issue puede ser reemplazado por el administrador local y, por lo tanto, no es una fuente confiable de información. - larsks


La forma más confiable. cuando  lsb_release  no está instalado es:

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

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

En instalaciones mínimas, lsb_release Está perdido.

Para que esto funcione también con los clones de Red Hat (el crédito va a los comentarios):

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

O, como un solo comando (en lugar de dos "rpm" que se están ejecutando):

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

Utilizar sed/cut y otro texto manipulando herramientas de UNIX para obtener lo que quieres.


12
2018-06-05 11:15



Esto parece funcionar, más genéricamente: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'  sl es para Scientific Linux; Si conoce el nombre correcto para otras reconstrucciones de RHEL, puede comentar a continuación. Advertencia - no probado extensivamente. - Dan Pritts
Sí, gracias, una nota: no funciona con RHEL Worstation. - lzap
Una nota: esto es mucho más lento que analizar / etc / foo-release. - Dan Pritts
o rpm -qa | grep release es aún más fácil - warren


Suponiendo que realmente es un lanzamiento de Red Hat (no Centos):

rpm -q redhat-release

O simplemente ejecuta:

uname -r

Y mapear la salida. Los núcleos 2.6.9 son RHEL4, los núcleos 2.6.18 son RHEL5. Si es necesario, puede asignar la versión completa a las versiones de actualización específicas de Red Hat (es decir, 2.6.9-89 es RHEL5 U4).


5
2017-12-01 13:36



rpm -q redhat-release solo regresa package redhat-release is not installed para mi, y uname -r Solo me dice el lanzamiento del kernel. - Mark Booth
Oh ! Y ahora que el tiempo ha pasado, ¿qué sería RHEL6? RHEL7? Hum ... Aquí están las respuestas: access.redhat.com/articles/3078#RHEL7 - mika


Me gusta mucho usar el /etc/os-release archivo, que se encuentra en la versión 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

Este archivo se puede obtener en scripts, como:

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

1
2018-01-23 20:28



Interesante, útil. Desafortunadamente, no está presente en RHEL6 por lo que tiene un valor limitado en este momento. - Dan Pritts


Si solo desea obtener los números de versión, lo siguiente es tan breve y simple como puedo obtenerlo.

Probado en rhel 6.7, rhel 7.2, debian 8.3 y ubuntu 14.04:

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

Para un ejemplo práctico, supongamos que desea probar la versión mayor y menor de la distribución y hacer cosas basadas en eso:

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





Llegué tarde a esto, pero me divertí intentando averiguar la versión de RHEL en varios nodos remotos. Por lo tanto, si tiene un lote de servidores que usan la misma contraseña (lo sé, lo sé ...), aquí hay un proceso rápido y sucio para verificar la versión de RedHat

Crear un script de expectativa

vim server-version.sh

Espere que el script compruebe la versión principal de RedHat en varios 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"

Ejecuta el script para todos tus nodos.

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

Salida

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



Si vas a hacer cosas remotas en muchas máquinas, te recomiendo que uses Ansible en lugar de scripts de bash enrollados a mano. - Neil Mayhew
También recomiendo no habilitar el inicio de sesión de root sobre ssh - Neil Mayhew


yo prefiero 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

0
2017-10-04 07:14