web-dev-qa-db-fra.com

Quelle version de RHEL est-ce que j'utilise?

À partir du shell et sans privilèges root, comment puis-je déterminer la version de Red Hat Enterprise Linux que j'utilise?

Idéalement, j'aimerais obtenir la version majeure et la version mineure, par exemple RHEL 4.0 ou RHEL 5.1, etc.

151
Arthur Ulfeldt

Vous pouvez utiliser le lsb_release commande sur diverses distributions Linux:

lsb_release -i -r 

Cela vous indiquera la distribution et la version et est un peu plus précis que l'accès à des fichiers qui peuvent ou non avoir été modifiés par l'administrateur ou un progiciel. En plus de travailler sur plusieurs distributions.

Pour RHEL, vous devez utiliser:

cat /etc/redhat-release
154
Zypher

Vous pouvez regarder le contenu de/etc/redhat-release, qui ressemblera à ceci:

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

Le contenu est différent pour un système RHEL réel. Cette technique fonctionne sur tous les dérivés RedHat, y compris CentOS, Fedora et autres.

143
larsks

Je préfère utiliser le fichier/etc/issue.

$ cat /etc/issue

J'ai vu de nombreuses situations où/etc/redhat-release a été modifié pour répondre aux exigences de compatibilité logicielle (Dell ou les agents de gestion HP, par exemple).

25
ewwhite

Le moyen le plus fiable quandlsb_releasen'est pas installé est:

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

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

Sur les installations minimales, lsb_release est manquant.

Pour que cela fonctionne également avec les clones Red Hat (le mérite revient aux commentaires):

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

Ou, comme une seule commande (plutôt que deux "rpm" en cours d'exécution):

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

Utilisez sed/cut et d'autres outils de manipulation de texte UNIX pour obtenir ce que vous voulez.

13
lzap

En supposant que c'est vraiment une version de Red Hat (pas Centos):

rpm -q redhat-release

Ou lancez simplement:

uname -r

Et mappez la sortie. 2.6.9 les noyaux sont RHEL4, 2.6.18 les noyaux sont RHEL5. Si nécessaire, vous pouvez mapper la version complète aux versions de mise à jour spécifiques de Red Hat (par exemple, 2.6.9-89 est RHEL5 U4).

6
TCampbell

Je préfère 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

J'aime bien utiliser le /etc/os-release fichier, qui se trouve dans la version 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

Ce fichier peut provenir de scripts, comme:

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

Si vous souhaitez simplement obtenir les numéros de version, ce qui suit est à peu près aussi court et simple que possible.

Testé sur rhel 6.7, rhel 7.2, debian 8.3 et ubuntu 14.04:

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

Pour un exemple pratique, disons que vous voulez tester la version majeure et mineure de distribution et faire les choses en fonction de cela:

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

Une arrivée tardive à cela, mais je me suis amusé à essayer de comprendre la version RHEL sur plusieurs nœuds distants. Donc, si vous avez un lot de serveurs qui utilisent le même mot de passe (je sais, je sais ...) voici une vérification rapide et sale de la version RedHat:

Créer un script attend

vim server-version.sh

Attendez-vous à ce que le script vérifie la version principale de RedHat sur plusieurs hôtes distants

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

Exécutez le script pour tous vos nœuds

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

Sortie

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

...
1
Lefty G Balogh