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.
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.
Respuestas:
Puede 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
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)
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.
lsb_release
es el primero que hay que tratar, pero ya que no se haya instalado mirando archivos es un buen plan B.
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).
/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 livianos que no tienen instaladas las utilidades lsb *.
/etc/issue
está destinado a ser analizado por agetty , que reemplaza las secuencias de escape con la información adecuada. Si lo cat
hace, el resultado puede ser decepcionante. En Fedora, uno obtiene Fedora release 20 (Heisenbug) Kernel \r on an \m (\l)
, que le dice algo, pero en RHEL7, uno simplemente obtiene \S Kernel \r on an \m
.
/etc/issue
puede ser reemplazado por el administrador local y, por lo tanto, no es una fuente confiable de información.
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
falta.
Para que esto funcione también con 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 para manipular texto para obtener lo que desea.
rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'
sl es para Scientific Linux; si conoce el nombre correcto para otras reconstrucciones de RHEL, tal vez comente a continuación. Advertencia: no se ha probado exhaustivamente.
rpm -qa | grep release
es aún más fácil
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).
rpm -q redhat-release
solo regresa package redhat-release is not installed
por mí y uname -r
me dice la versión del kernel.
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
Me gusta mucho usar el /etc/os-release
archivo, que está 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)
Si 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
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
[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 ~]#
...