Vraag Welke versie van RHEL gebruik ik?


Van de shell en zonder rootprivileges, hoe kan ik bepalen welke Red Hat Enterprise Linux-versie ik gebruik?

In het ideale geval zou ik zowel de hoofd- als de secundaire releaseversie willen hebben, bijvoorbeeld RHEL 4.0 of RHEL 5.1, enz.


142
2017-12-01 01:59


oorsprong




antwoorden:


U kunt de lsb_release commando op verschillende Linux-distributies:

lsb_release -i -r 

Dit zal u de distributie en versie vertellen en is een beetje nauwkeuriger dan toegang tot bestanden die al dan niet zijn aangepast door de beheerder of een softwarepakket. Evenals werken over meerdere distributies.

Voor RHEL moet u het volgende gebruiken:

cat /etc/redhat-release

144
2017-12-01 06:47



commando niet gevonden in mijn CentOS 5.4 box :( - gbjbaanb
@gbjbaanb: Dat is vreemd, ik heb het getest op een verse 5.4 minimale installatie en het werkte prima ... - Zypher
lsb_release -i -r -bash: lsb_release: commando niet gevonden. Echter, cat /etc/redhat-release Red Hat Enterprise Linux Server versie 5.6 (Tikanga) - Tom
Voor de goede orde: werkt niet op RHEL 6.5 minimale installatie. Commando lsb_release is nergens te vinden. - sborsky
lsb_release is geen lichtgewicht pakket, het haalt CUPS binnen om '/ usr / bin / lp' te leveren, wat wat pdf-vertaal-rommel oplevert, die enkele rendering-bibliotheken ophaalt ... - Jens Timmerman


Je kunt de inhoud van / etc / redhat-release bekijken, die er ongeveer zo uitziet:

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

De inhoud is anders voor een echt RHEL-systeem. Deze techniek werkt op alle RedHat-derivaten, waaronder CentOS, Fedora en anderen.


140
2017-12-01 02:13



Dit is het meest geschikte antwoord op de vraag. - fsoppelsa
lsb_release is het eerste wat je moet proberen, maar omdat dat misschien niet geïnstalleerd is, is het een goed plan om naar bestanden te kijken. - chicks
@chicks Aangezien de vraag om een ​​test voor Redhat-systemen vraagt ​​en lsb_release niet standaard op redhat-systemen en / etc / redhat-release is geïnstalleerd, is lsb_release natuurlijk niet het eerste dat u moet proberen! - bye
@bye Het is het eerste wat je moet proberen (althans naar mijn mening), je probeert altijd eerst de dingen die op alle distributies eerst moeten voorkomen, dan pas stap je over op distributiespecifieke oplossingen. - Dennis Nolte


Ik gebruik liever het bestand / etc / issue.

$ cat /etc/issue

Ik heb veel situaties gezien waarin / etc / redhat-release is gewijzigd om te voldoen aan softwarecompatibiliteitsvereisten (bijvoorbeeld Dell of HP's beheeragenten).


24
2017-12-01 05:35



/etc/issue werkt ook op andere besturingssystemen, zoals Debian en Ubuntu, en werkt met Linux-besturingssystemen die niet voldoen aan de Linux Standards Base, en lichtgewicht besturingssystemen waarop de lsb * -hulpprogramma's niet zijn geïnstalleerd. - Stefan Lasiewski
Dit is niet betrouwbaar. Blijkbaar /etc/issue is bedoeld om te worden geparseerd door agetty, die de escape-sequences door juiste informatie vervangt. Als je dat gewoon doet cat het resultaat kan teleurstellend zijn. Op Fedora krijg je Fedora release 20 (Heisenbug) Kernel \r on an \m (\l), wat je iets vertelt, maar op RHEL7 krijg je gewoon een \S Kernel \r on an \m. - David Tonhofer
Let daar op /etc/issue kan worden vervangen door de lokale beheerder en is daarom geen betrouwbare informatiebron. - larsks


De meest betrouwbare manier wanneer  lsb_release  is niet geïnstalleerd is:

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

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

Op minimale installaties lsb_release ontbreekt.

Om dit ook met Red Hat-klonen te laten werken (credits gaan naar opmerkingen):

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

Of, als een enkele opdracht (in plaats van twee "rpm"'s die worden uitgevoerd):

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

Gebruik sed/cut en andere tekst die UNIX-tools manipuleert om te krijgen wat u wilt.


12
2018-06-05 11:15



Dit lijkt meer algemeen te werken: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'  sl is voor Scientific Linux; als je de juiste naam weet voor andere RHEL-herbouwingen, kun je hieronder een opmerking plaatsen. Waarschuwing - niet uitgebreid getest. - Dan Pritts
Ja, bedankt, een opmerking: werkt niet met RHEL Worstation. - lzap
Eén opmerking - dit loopt veel langzamer dan parsing / etc / foo-release. - Dan Pritts
of rpm -qa | grep release is nog eenvoudiger - warren


Ervan uitgaande dat het echt een Red Hat-release is (niet Centos):

rpm -q redhat-release

Of ren gewoon:

uname -r

En breng de uitvoer in kaart. 2.6.9 kernels zijn RHEL4, 2.6.18 kernels zijn RHEL5. Indien nodig kunt u de volledige versie toewijzen aan de specifieke updateversies van Red Hat (d.w.z. 2.6.9-89 is RHEL5 U4).


5
2017-12-01 13:36



rpm -q redhat-release komt gewoon terug package redhat-release is not installed voor mij, en uname -r vertelt me ​​gewoon de kernel-release. - Mark Booth
Oh ! En nu die tijd voorbij is, wat zou RHEL6 zijn? RHEL7? Hum ... Hier zijn de antwoorden: access.redhat.com/articles/3078#RHEL7 - mika


Ik vind het heel leuk om de /etc/os-release bestand, dat zich in de release RPM bevindt:

# 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

Dit bestand kan worden verkregen in scripts, zoals:

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

1
2018-01-23 20:28



Interessant, nuttig. Helaas is RHEL6 op dit moment niet van beperkte waarde. - Dan Pritts


Als je alleen de versienummers wilt krijgen, is het volgende ongeveer zo kort en eenvoudig als ik het kan krijgen.

Getest op rhel 6.7, rhel 7.2, debian 8.3 en ubuntu 14.04:

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

Voor een praktisch voorbeeld, stel dat je wilt testen voor de hoofddistributie en de kleine versie en daar dingen op gebaseerd:

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





Een late aankomst, maar ik vond het leuk om de RHEL-versie op verschillende externe knooppunten te vinden. Dus, als je een batch servers hebt die hetzelfde wachtwoord gebruiken (ik weet het, ik weet het ...), dan is hier snel en vies om de RedHat-versie te controleren:

Creëer een verwacht script

vim server-version.sh

Verwacht een script om de belangrijke RedHat-versie op meerdere externe hosts te controleren

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

Voer het script uit voor al uw knooppunten

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

uitgang

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



Als je op veel machines op afstand dingen gaat doen, raad ik sterk aan om Ansible te gebruiken in plaats van met de hand gerolde bash-scripts. - Neil Mayhew
Ik raad ook aan root-aanmelding via ssh niet in te schakelen - Neil Mayhew


ik geef de voorkeur aan 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