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.
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.
Jawaban:
Anda dapat menggunakan lsb_release
perintah 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
lsb_release -i -r
-bash: lsb_release: perintah tidak ditemukan. Namun, cat /etc/redhat-release
Red Hat Enterprise Linux Server merilis 5.6 (Tikanga)
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.
lsb_release
adalah hal pertama yang harus dicoba, tetapi karena itu mungkin tidak diinstal melihat file adalah Rencana B. yang baik
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).
/etc/issue
juga 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.
/etc/issue
dimaksudkan untuk diurai oleh agetty , yang menggantikan urutan pelarian dengan informasi yang tepat. Jika Anda hanya cat
melakukannya, 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
.
/etc/issue
dapat diganti oleh admin lokal dan karenanya bukan sumber informasi yang dapat diandalkan.
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_release
tidak 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
/ cut
dan alat manipulasi teks UNIX lainnya untuk mendapatkan yang Anda inginkan.
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.
rpm -qa | grep release
bahkan lebih mudah
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).
rpm -q redhat-release
hanya mengembalikan package redhat-release is not installed
untuk saya, dan uname -r
hanya memberi tahu saya rilis kernel.
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
Saya cukup suka menggunakan /etc/os-release
file, 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)
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
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 ~]#
...