web-dev-qa-db-ja.com

どのバージョンのRHELを使用していますか?

シェルから、root権限なしで、実行しているRed Hat Enterprise Linuxのバージョンを確認するにはどうすればよいですか?

理想的には、メジャーリリースバージョンとマイナーリリースバージョンの両方(RHEL 4.0やRHEL 5.1など)を入手したいのですが。

151
Arthur Ulfeldt

lsb_releaseさまざまなLinuxディストリビューションのコマンド:

lsb_release -i -r 

これにより、ディストリビューションとバージョンがわかります。管理者やソフトウェアパッケージによって変更された、または変更されていない可能性があるファイルにアクセスするよりも少し正確です。複数のディストリビューションで作業するだけでなく、.

RHELの場合、以下を使用する必要があります。

cat /etc/redhat-release
154
Zypher

次のような/ etc/redhat-releaseの内容を確認できます。

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

実際のRHELシステムでは内容が異なります。この手法は、CentOS、Fedoraなどを含むすべてのRedHat派生物で機能します。

143
larsks

/ etc/issueファイルを使用したい。

$ cat /etc/issue

/ etc/redhat-releaseがソフトウェアの互換性要件を満たすように変更された多くの状況を見てきました(たとえば、DellまたはHPの管理エージェント)。

25
ewwhite

最も信頼できる方法whenlsb_releaseインストールされていませんは:

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

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

最小インストールでは、lsb_release 不足している。

これをRed Hatクローンでも機能させるには(クレジットはコメントに送られます):

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

または、単一のコマンドとして(2つの「rpm」が実行されるのではなく):

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

sed/cutおよびUNIXツールを操作するその他のテキストを使用して、必要なものを取得します。

13
lzap

それが本当にRed Hatリリース(Centosではない)であると仮定します。

rpm -q redhat-release

または単に実行します:

uname -r

そして、出力をマッピングします。 2.6.9カーネルはRHEL4、2.6.18カーネルはRHEL5です。必要に応じて、フルバージョンをRed Hatからの特定のアップデートリリースにマップできます(つまり、2.6.9-89はRHEL5 U4です)。

6
TCampbell

私は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
3

/etc/os-releaseファイル。これはリリース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

このファイルは、次のようなスクリプトで入手できます。

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

バージョン番号だけを取得したい場合、以下は私が取得できる限り短くて簡単です。

Rhel 6.7、rhel 7.2、debian 8.3、ubuntu 14.04でテスト:

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

実用的な例として、ディストリビューションのメジャーバージョンとマイナーバージョンをテストし、それに基づいて処理を実行するとします。

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

これに遅れて到着しましたが、私はいくつかのリモートノードでRHELのバージョンを理解しようとして楽しかったです。したがって、同じパスワードを使用するサーバーのバッチがある場合(わかっています、わかっています...)、RedHatのバージョンを確認するためにすばやく簡単な方法を次に示します。

expectスクリプトを作成する

vim server-version.sh

複数のリモートホストでRedHatのメジャーバージョンをチェックするスクリプトが必要です

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

すべてのノードに対してスクリプトを実行します

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

出力

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

...
1
Lefty G Balogh