Kabuktan ve kök yetkileri olmadan, hangi Red Hat Enterprise Linux sürümünü kullandığımı nasıl belirleyebilirim?
İdeal olarak, hem büyük hem de küçük sürüm sürümlerini edinmek istiyorum, örneğin RHEL 4.0 veya RHEL 5.1, vb.
Kabuktan ve kök yetkileri olmadan, hangi Red Hat Enterprise Linux sürümünü kullandığımı nasıl belirleyebilirim?
İdeal olarak, hem büyük hem de küçük sürüm sürümlerini edinmek istiyorum, örneğin RHEL 4.0 veya RHEL 5.1, vb.
Yanıtlar:
Sen kullanabilirsiniz lsb_release
çeşitli Linux dağıtımlarında komutu:
lsb_release -i -r
Bu size Dağıtım ve Versiyonu söyleyecektir ve yönetici veya bir yazılım paketi tarafından değiştirilmiş veya değiştirilmemiş dosyalara erişimden biraz daha doğrudur. Birden fazla dağıtımda çalışmanın yanı sıra.
RHEL için kullanmanız gerekenler:
cat /etc/redhat-release
lsb_release -i -r
-bash: lsb_release: komut bulunamadı. Ancak, cat /etc/redhat-release
Red Hat Enterprise Linux Sunucusu 5.6'yı yayımladı (Tikanga)
Bunun gibi görünecek olan / etc / redhat-release içeriğine bakabilirsiniz:
$ cat /etc/redhat-release
CentOS release 5.4 (Final)
İçerik, gerçek bir RHEL sistemi için farklıdır. Bu teknik, CentOS, Fedora ve diğerleri dahil olmak üzere tüm RedHat türevlerinde çalışır.
lsb_release
denemek için ilk şey, ancak bu dosyalara bakarak yüklenmemiş olabilir çünkü iyi bir Plan B
/ Etc / issue dosyasını kullanmayı tercih ederim.
$ cat /etc/issue
/ Etc / redhat-release yazılımının yazılım uyumluluk gereksinimlerini karşılayacak şekilde değiştirildiği birçok durum gördüm (örneğin, Dell veya HP'nin yönetim aracıları).
/etc/issue
ayrıca Debian ve Ubuntu gibi diğer işletim sistemlerinde de çalışır ve Linux Standartları Tablosuna uymayan Linux işletim sistemlerinde ve lsb * hizmet programlarına sahip olmayan hafif işletim sistemlerinde çalışır.
/etc/issue
tarafından ayrıştırılmak isteniyor . Sadece sen , sonuç underwhelming olabilir. Fedora'da, biri size bir şey söyler ama RHEL7'de bir tane olur . cat
Fedora release 20 (Heisenbug) Kernel \r on an \m (\l)
\S Kernel \r on an \m
/etc/issue
dolayısıyla yerel yönetici tarafından değiştirilebilir ve edilebilen güvenilir bir bilgi kaynağı değildir.
En güvenilir yolu yüklü değil ise: lsb_release
# rpm -q --queryformat '%{VERSION}' redhat-release-server
6Server
# rpm -q --queryformat '%{RELEASE}' redhat-release-server
6.4.0.4.el6
Minimum kurulumlarda, lsb_release
eksik.
Bunun Red Hat klonları ile de çalışmasını sağlamak (kredi yorumlara gidiyor):
# rpm -q --queryformat '%{VERSION}' $(rpm -qa '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)')
Veya, tek bir komut olarak (iki "rpm" çalıştırılıyor yerine):
# rpm -qa --queryformat '%{VERSION}\n' '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)'
İstediğinizi elde etmek için sed
/ cut
ve UNIX araçlarını işleyen diğer metinleri kullanın .
rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'
sl, Scientific Linux içindir; Diğer RHEL inşaatları için doğru adı biliyorsanız, belki aşağıda yorum yapabilirsiniz. Uyarı - kapsamlı bir şekilde test edilmedi.
rpm -qa | grep release
da daha kolay
Gerçekten bir Red Hat sürümüdür (Centos değil).
rpm -q redhat-release
Ya da sadece koş:
uname -r
Ve çıktıyı eşleyin. 2.6.9 çekirdekler RHEL4, 2.6.18 çekirdekler RHEL5'tir. Gerekirse, tam sürümü Red Hat'ten gelen belirli güncelleme sürümleriyle eşleyebilirsiniz (ör. 2.6.9-89, RHEL5 U4'tür).
rpm -q redhat-release
sadece package redhat-release is not installed
benim için geri döndü ve bana uname -r
sadece çekirdek salımını söylüyor.
Ben tercih ederim 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
/etc/os-release
RPM sürümündeki dosyayı kullanmayı çok seviyorum :
# 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
Bu dosya aşağıdaki gibi betiklerden kaynaklanabilir:
$ source /etc/os-release
$ echo $NAME
CentOS Linux
$ echo $VERSION
7 (Core)
Sadece sürüm numaralarını almak istiyorsanız, aşağıdakiler bulabildiğim kadar kısa ve basit.
6.7, 7.7, Debian 8.3 ve Ubuntu 14.04'te test edilmiştir:
lsb_release -s -r | cut -d '.' -f 1
Pratik bir örnek olarak, dağıtımın ana ve küçük versiyonlarını test etmek istediğinizi ve buna göre bir şeyler yaptığınızı söyleyin:
#!/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
Buna geç varış, ancak birkaç uzak düğümdeki RHEL versiyonunu bulmaya çalışırken çok eğlendim. Yani, aynı şifreyi kullanan bir sunucu grubunuz varsa (biliyorum, biliyorum ...) RedHat sürümünü kontrol etmek için hızlı ve kirli:
Beklenti betiği oluşturun
vim server-version.sh
Birden fazla uzak ana bilgisayardaki ana RedHat sürümünü kontrol etmek için komut dosyası bekleyin
#!/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"
Tüm düğümleriniz için betiği çalıştırın
[root@home ~]#
for server in server1 server2 server3 server4 server5; do echo -e "$server: \c"; /root/server-version.sh $server; echo; echo; done;
Çıktı
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 ~]#
...