Pertanyaan Versi RHEL apa yang saya gunakan?


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

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


142
2017-12-01 01:59






Jawaban:


Anda dapat menggunakan lsb_release perintah pada 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 tidak dimodifikasi oleh admin atau paket perangkat lunak. Serta bekerja di beberapa distro.

Untuk RHEL, Anda harus menggunakan:

cat /etc/redhat-release

144
2017-12-01 06:47



perintah tidak ditemukan di kotak CentOS 5.4 saya :( - gbjbaanb
@ gbjbaanb: Itu aneh saya mengujinya pada instalasi minimal 5.4 segar dan itu bekerja dengan baik ... - Zypher
lsb_release -i -r -bash: lsb_release: perintah tidak ditemukan. Namun, cat /etc/redhat-release Red Hat Enterprise Linux Server rilis 5.6 (Tikanga) - Tom
Sekadar catatan: Tidak bekerja pada RHEL 6.5 pemasangan minimal. Command lsb_release tidak bisa ditemukan. - sborsky
lsb_release bukan paket ringan, Ini menarik CUPS untuk menyediakan '/ usr / bin / lp', yang menarik di beberapa pdf terjemahan goop, yang menarik di beberapa render libraries ... - Jens Timmerman


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

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

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


140
2017-12-01 02:13



Ini adalah jawaban yang paling tepat untuk pertanyaan itu. - fsoppelsa
lsb_release adalah hal pertama yang harus dicoba, tetapi karena itu mungkin tidak dipasang melihat file adalah Rencana B. yang baik - chicks
@chicks Mengingat bahwa pertanyaan tersebut meminta tes untuk sistem Redhat, dan lsb_release tidak diinstal secara default pada sistem redhat dan / etc / redhat-release, maka lsb_release jelas bukan hal pertama yang harus dicoba! - bye
@bye Ini adalah hal pertama yang harus dicoba (setidaknya menurut saya), Anda selalu mencoba hal-hal yang seharusnya umum pada semua distribusi terlebih dahulu, kemudian hanya Anda beralih ke solusi khusus distribusi. - Dennis Nolte


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).


24
2017-12-01 05:35



/etc/issue juga berfungsi pada OS lain, 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
Ini tidak bisa diandalkan. Tampaknya /etc/issue dimaksudkan untuk diuraikan agetty, yang menggantikan urutan pelarian dengan informasi yang tepat. Jika kamu adil cat itu, hasilnya mungkin mengecewakan. Di Fedora, orang mendapat Fedora release 20 (Heisenbug) Kernel \r on an \m (\l), yang memberitahu Anda sesuatu tetapi pada RHEL7, yang baru saja didapat \S Kernel \r on an \m. - David Tonhofer
Perhatikan itu /etc/issue dapat diganti oleh admin lokal dan karenanya bukan sumber informasi yang dapat dipercaya. - larsks


Cara yang paling bisa diandalkan kapan  lsb_release  tidak terpasang aku s:

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

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

Pada pemasangan minimal, lsb_release hilang.

Untuk mendapatkan ini bekerja juga dengan klon Red Hat (kredit pergi 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 sedang dieksekusi):

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

Menggunakan sed/cut dan alat manipulasi UNIX lainnya untuk mendapatkan apa yang Anda inginkan.


12
2018-06-05 11:15



Ini sepertinya bekerja, lebih umum: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'  sl adalah untuk Scientific Linux; jika Anda tahu nama yang tepat untuk membangun ulang RHEL lainnya mungkin komentar di bawah ini. Peringatan - tidak diuji secara ekstensif. - Dan Pritts
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
atau rpm -qa | grep release lebih mudah - warren


Dengan asumsi itu adalah rilis Red Hat (bukan Centos):

rpm -q redhat-release

Atau jalankan saja:

uname -r

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


5
2017-12-01 13:36



rpm -q redhat-release baru kembali package redhat-release is not installed untuk saya, dan uname -r hanya memberi tahu saya rilis kernel. - Mark Booth
Oh! Dan sekarang waktu telah berlalu, apa yang akan menjadi RHEL6? RHEL7? Hum ... Inilah jawabannya: access.redhat.com/articles/3078#RHEL7 - mika


Saya cukup suka menggunakan /etc/os-release file, yang ada di RPM rilis:

# 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 di skrip, seperti:

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

1
2018-01-23 20:28



Menarik, bermanfaat. Sayangnya, tidak hadir pada RHEL6 sehingga memiliki nilai terbatas saat ini. - Dan Pritts


Jika Anda hanya ingin mendapatkan nomor versi, berikut ini sesingkat dan sesederhana yang bisa saya 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 untuk distribusi mayor dan versi minor dan lakukan 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

0
2018-04-06 00:44





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

Buat skrip yang diharapkan

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

...

0
2017-10-05 12:31



Jika Anda akan melakukan hal-hal remote pada banyak mesin, saya sangat menyarankan menggunakan Ansible daripada skrip bash hand-rolled. - Neil Mayhew
Saya juga menyarankan untuk tidak mengaktifkan login root melalui ssh - Neil Mayhew