Versi RHEL apa yang saya gunakan?

151

Dari shell dan tanpa hak akses root, bagaimana saya bisa menentukan versi Red Hat Enterprise Linux yang saya jalankan?

Idealnya, saya ingin mendapatkan versi rilis utama dan minor, misalnya RHEL 4.0 atau RHEL 5.1, dll.

Arthur Ulfeldt
sumber

Jawaban:

154

Anda dapat menggunakan lsb_releaseperintah di berbagai distribusi Linux:

lsb_release -i -r 

Ini akan memberi tahu Anda Distribusi dan Versi dan sedikit lebih akurat daripada mengakses file yang mungkin atau mungkin belum dimodifikasi oleh admin atau paket perangkat lunak. Serta bekerja di beberapa distro.

Untuk RHEL, Anda harus menggunakan:

cat /etc/redhat-release
Zypher
sumber
5
perintah tidak ditemukan pada kotak CentOS 5.4 saya :(
gbjbaanb
@gbjbaanb: Itu aneh saya diuji pada segar 5,4 minimal menginstal dan itu bekerja dengan baik ...
Zypher
26
lsb_release -i -r-bash: lsb_release: perintah tidak ditemukan. Namun, cat /etc/redhat-releaseRed Hat Enterprise Linux Server merilis 5.6 (Tikanga)
Tom
7
Sebagai catatan: Tidak bekerja pada instalasi minimal RHEL 6.5. Perintah lsb_release tidak dapat ditemukan.
sborsky
4
lsb_release bukan paket yang ringan, ini menarik CUPS untuk menyediakan '/ usr / bin / lp', yang menarik beberapa terjemahan pdf goop, yang menarik beberapa perpustakaan rendering ...
Jens Timmerman
142

Anda dapat melihat isi / etc / redhat-release, yang akan terlihat seperti ini:

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

Konten berbeda untuk sistem RHEL yang sebenarnya. Teknik ini bekerja pada semua turunan RedHat, termasuk CentOS, Fedora, dan lainnya.

larsks
sumber
14
Ini adalah jawaban yang paling tepat untuk pertanyaan itu.
fsoppelsa
lsb_releaseadalah hal pertama yang harus dicoba, tetapi karena itu mungkin tidak diinstal melihat file adalah Rencana B. yang baik
anak ayam
1
@chicks Karena pertanyaannya menanyakan tes untuk sistem Redhat, dan lsb_release tidak diinstal secara default pada sistem redhat dan / etc / redhat-release adalah, maka lsb_release jelas bukan hal pertama yang dicoba!
sampai jumpa
@bye Ini adalah hal pertama yang harus dicoba (setidaknya menurut saya), Anda selalu mencoba hal-hal yang harus umum pada semua distribusi terlebih dahulu, maka hanya Anda yang beralih ke solusi khusus distribusi.
Dennis Nolte
25

Saya lebih suka menggunakan file / etc / issue.

$ cat /etc/issue

Saya telah melihat banyak situasi di mana / etc / redhat-release telah dimodifikasi untuk memenuhi persyaratan kompatibilitas perangkat lunak (Dell atau agen manajemen HP, misalnya).

putih
sumber
1
/etc/issuejuga bekerja pada OS lain juga, seperti Debian & Ubuntu, dan bekerja dengan OS Linux yang tidak sesuai dengan Basis Standar Linux, dan OS ringan yang tidak memiliki utilitas lsb * diinstal.
Stefan Lasiewski
5
Ini tidak bisa diandalkan. Rupanya /etc/issuedimaksudkan untuk diurai oleh agetty , yang menggantikan urutan pelarian dengan informasi yang tepat. Jika Anda hanya catmelakukannya, hasilnya mungkin kurang memuaskan. Di Fedora, satu mendapat Fedora release 20 (Heisenbug) Kernel \r on an \m (\l), yang memberi tahu Anda sesuatu tetapi di RHEL7, satu mendapat \S Kernel \r on an \m.
David Tonhofer
Catatan yang /etc/issuedapat diganti oleh admin lokal dan karenanya bukan sumber informasi yang dapat diandalkan.
larsks
13

Cara yang paling dapat diandalkan ketika lsb_release tidak diinstal adalah:

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

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

Pada pemasangan minimal, lsb_releasetidak ada.

Agar ini berfungsi juga dengan klon Red Hat (kredit diberikan ke komentar):

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

Atau, sebagai satu perintah (bukan dua "rpm" yang dieksekusi):

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

Gunakan sed/ cutdan alat manipulasi teks UNIX lainnya untuk mendapatkan yang Anda inginkan.

lzap
sumber
2
Ini tampaknya bekerja, lebih umum: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)' sl adalah untuk Scientific Linux; jika Anda tahu nama yang tepat untuk pembangunan kembali RHEL lainnya, mungkin komentar di bawah ini. Peringatan - tidak diuji secara ekstensif.
Dan Pritts
1
Ya terima kasih, satu catatan: tidak bekerja dengan RHEL Worstation.
lzap
Satu catatan - ini berjalan jauh lebih lambat daripada parsing / etc / foo-release.
Dan Pritts
1
atau rpm -qa | grep releasebahkan lebih mudah
warren
6

Dengan asumsi itu benar-benar rilis Red Hat (bukan Centos):

rpm -q redhat-release

Atau jalankan saja:

uname -r

Dan memetakan output. 2.6.9 kernel adalah RHEL4, 2.6.18 kernel adalah RHEL5. Jika perlu, Anda dapat memetakan versi lengkap untuk rilis pembaruan spesifik dari Red Hat (yaitu 2.6.9-89 adalah RHEL5 U4).

TCampbell
sumber
1
rpm -q redhat-releasehanya mengembalikan package redhat-release is not installeduntuk saya, dan uname -rhanya memberi tahu saya rilis kernel.
Mark Booth
Oh! Dan sekarang waktu telah berlalu, apa yang akan menjadi RHEL6? RHEL7? Hum ... Ini jawabannya: access.redhat.com/articles/3078#RHEL7
mika
3

Saya lebih suka 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
Wernfried Domscheit
sumber
2

Saya cukup suka menggunakan /etc/os-releasefile, yang ada di rilis 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

File ini dapat bersumber dari skrip, seperti:

$ source /etc/os-release
$ echo $NAME
CentOS Linux
$ echo $VERSION
7 (Core)
Andrew
sumber
Menarik, bermanfaat. Sayangnya, tidak hadir di RHEL6 sehingga nilainya terbatas saat ini.
Dan Pritts
1

Jika Anda hanya ingin mendapatkan nomor versi, berikut ini adalah singkat dan sederhana yang saya bisa dapatkan.

Diuji pada rhel 6.7, rhel 7.2, debian 8.3 dan ubuntu 14.04:

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

Untuk contoh praktis, katakan Anda ingin menguji distribusi mayor dan minor versi dan melakukan hal-hal berdasarkan itu:

#!/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
aseq
sumber
1

Kedatangan terlambat untuk ini, tapi saya senang mencoba mencari tahu versi RHEL pada beberapa node jarak jauh. Jadi, jika Anda memiliki banyak server yang menggunakan kata sandi yang sama (saya tahu, saya tahu ...) di sini adalah cepat dan kotor untuk memeriksa versi RedHat:

Buat skrip harapan

vim server-version.sh

Harapkan skrip untuk memeriksa versi RedHat utama pada beberapa host jarak jauh

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

Jalankan skrip untuk semua node Anda

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

Keluaran

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

...
Lefty G Balogh
sumber
Jika Anda akan melakukan hal-hal jarak jauh pada banyak mesin, saya sangat menyarankan untuk menggunakan skrip bash Ansible daripada digulung tangan.
Neil Mayhew
Saya juga merekomendasikan untuk tidak mengaktifkan login root melalui ssh
Neil Mayhew