it-swarm-es.com

¿Qué versión de RHEL estoy usando?

Desde 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.

151
Arthur Ulfeldt

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. Además de trabajar en múltiples distribuciones.

Para RHEL, debe usar:

cat /etc/redhat-release
154
Zypher

Puede ver 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.

143
larsks

Prefiero usar el archivo/etc/issue.

$ cat /etc/issue

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

25
ewwhite

La forma más confiable cuandolsb_releaseno 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 ejecutar dos "rpm"):

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

Utilice sed/cut y otras herramientas de UNIX que manipulan texto para obtener lo que desea.

13
lzap

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

rpm -q redhat-release

O simplemente ejecuta:

uname -r

Y mapear la salida. 2.6.9 los núcleos son RHEL4, 2.6.18 los núcleos 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).

6
TCampbell

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
3

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 puede obtenerse en scripts, como:

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

Si solo desea obtener los números de versión, lo siguiente es lo más breve y simple posible.

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, digamos que desea probar la distribución de la versión mayor y menor 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
1
aseq

Llegué tarde a esto, pero me divertí tratando de descubrir la versión RHEL en varios nodos remotos. Entonces, si tiene un lote de servidores que usan la misma contraseña (lo sé, lo sé ...) aquí hay una rápida y sucia para verificar la versión de RedHat:

Crear un script de espera

vim server-version.sh

Espere que el script verifique 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"

Ejecute el script para todos sus nodos

[[email protected] ~]#
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)
[[email protected] ~]#

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

...
1
Lefty G Balogh