Question 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 les versions majeure et mineure, par exemple RHEL 4.0 ou RHEL 5.1, etc.


142
2017-12-01 01:59


origine




Réponses:


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 modifiés ou non par l’administrateur ou un progiciel. En plus de travailler sur plusieurs distributions.

Pour RHEL, vous devez utiliser:

cat /etc/redhat-release

144
2017-12-01 06:47



commande introuvable sur ma boîte CentOS 5.4 :( - gbjbaanb
@gbjbaanb: C'est étrange, je l'ai testé sur une nouvelle installation minimale de 5.4 et tout a bien fonctionné ... - Zypher
lsb_release -i -r -bash: lsb_release: commande introuvable. cependant, cat /etc/redhat-release Red Hat Enterprise Linux Server version 5.6 (Tikanga) - Tom
À titre d'information: ne fonctionne pas sur l'installation minimale de RHEL 6.5. La commande lsb_release est introuvable. - sborsky
lsb_release n’est pas un paquet léger. Il permet à CUPS de fournir ‘/ usr / bin / lp’, qui récupère des fichiers de traduction PDF, ainsi que des bibliothèques de rendu ... - Jens Timmerman


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.


140
2017-12-01 02:13



C'est la réponse la plus appropriée à la question. - fsoppelsa
lsb_release est la première chose à essayer, mais puisque cela n’est peut-être pas installé, le plan B est bon. - chicks
@chicks Etant donné que la question demande un test pour les systèmes Redhat, et que lsb_release n'est pas installé par défaut sur les systèmes redhat et que / etc / redhat-release est activé, lsb_release n'est évidemment pas la première chose à essayer! - bye
@bye C'est la première chose à essayer (du moins à mon avis), vous essayez toujours les choses qui devraient être communes sur toutes les distributions en premier, puis vous passez uniquement aux solutions spécifiques à la distribution. - Dennis Nolte


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 (agents de gestion Dell ou HP, par exemple).


24
2017-12-01 05:35



/etc/issue fonctionne également sur d’autres systèmes d’exploitation, tels que Debian et Ubuntu, et fonctionne avec les systèmes d’exploitation Linux qui ne sont pas conformes à la base de normalisation Linux et avec les systèmes d’exploitation légers ne disposant pas des utilitaires lsb *. - Stefan Lasiewski
Ce n'est pas fiable. Apparemment /etc/issue est destiné à être analysé par agetty, qui remplace les séquences d'échappement par les informations appropriées. Si vous venez cat le résultat peut être décevant. Sur Fedora, on obtient Fedora release 20 (Heisenbug) Kernel \r on an \m (\l), qui vous dit quelque chose mais sur RHEL7, on obtient juste \S Kernel \r on an \m. - David Tonhofer
Notez que /etc/issue peut être remplacé par l’administrateur local et n’est donc pas une source d’information fiable. - larsks


Le moyen le plus fiable quand  lsb_release  N'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 crédit revient aux commentaires):

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

Ou, en 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)'

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


12
2018-06-05 11:15



Cela semble fonctionner, plus génériquement: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'  sl est pour Scientific Linux; Si vous connaissez le bon nom pour les autres reconstructions RHEL, commentez ci-dessous. Attention - pas testé de manière approfondie. - Dan Pritts
Oui merci, une remarque: ne fonctionne pas avec RHEL Worstation. - lzap
Une remarque - cela est beaucoup plus lent que l’analyse de / etc / foo-release. - Dan Pritts
ou rpm -qa | grep release est encore plus facile - warren


En supposant que ce soit vraiment une version de Red Hat (pas Centos):

rpm -q redhat-release

Ou tout simplement courir:

uname -r

Et mappez la sortie. Les noyaux 2.6.9 sont RHEL4, les noyaux 2.6.18 sont RHEL5. Si nécessaire, vous pouvez mapper la version complète sur les versions de mise à jour spécifiques de Red Hat (c'est-à-dire que les versions 2.6.9 à 89 correspondent à RHEL5 U4).


5
2017-12-01 13:36



rpm -q redhat-release revient juste package redhat-release is not installed pour moi et uname -r me dit juste la version du noyau. - Mark Booth
Oh! Et maintenant que le temps est passé, que serait RHEL6? RHEL7? Hum ... Voici les réponses: access.redhat.com/articles/3078#RHEL7 - mika


J'aime bien utiliser le /etc/os-release fichier, qui est 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 être recherché dans des scripts, tels que:

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

1
2018-01-23 20:28



Intéressant, utile. Malheureusement, non présent sur RHEL6, donc d’une valeur limitée pour le moment. - Dan Pritts


Si vous voulez simplement obtenir les numéros de version, voici ce qui suit est aussi simple et rapide 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, supposons que vous souhaitiez tester les versions majeure et mineure de la distribution et que vous utilisiez ces fonctions:

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





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 un rapide et sale pour vérifier la version de RedHat:

Créer un script d'attente

vim server-version.sh

Attendez-vous à ce qu'un 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 ~]#

...

0
2017-10-05 12:31



Si vous envisagez d'effectuer des tâches à distance sur de nombreuses machines, je vous recommande fortement d'utiliser Ansible plutôt que des scripts bash roulés à la main. - Neil Mayhew
Je recommande également de ne pas activer la connexion root sur ssh - Neil Mayhew


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

0
2017-10-04 07:14