어떤 버전의 RHEL을 사용하고 있습니까?


151

셸에서 루트 권한없이 실행중인 Red Hat Enterprise Linux 버전을 어떻게 확인할 수 있습니까?

이상적으로는 RHEL 4.0 또는 RHEL 5.1 등과 같이 주 및 부 릴리스 버전을 모두 갖고 싶습니다.

답변:


154

lsb_release다양한 Linux 배포 에서 명령을 사용할 수 있습니다 .

lsb_release -i -r 

이것은 배포 및 버전을 알려주며 관리자 나 소프트웨어 패키지에 의해 수정되었거나 수정되지 않은 파일에 액세스하는 것보다 약간 더 정확합니다. 여러 배포판에서 작업 할뿐만 아니라

RHEL의 경우 다음을 사용해야합니다.

cat /etc/redhat-release

5
명령을 내 CentOS는 찾을 수 없습니다 5.4 상자 :(
gbjbaanb

@gbjbaanb : 새로 설치 한 5.4 최소 설치에서 테스트 한 결과 이상했습니다 ...
Zypher

26
lsb_release -i -r-bash : lsb_release : 명령을 찾을 수 없습니다. 그러나 cat /etc/redhat-releaseRed Hat Enterprise Linux Server 릴리즈 5.6 (Tikanga)
Tom

7
RHEL 6.5 최소 설치에서는 작동하지 않습니다. lsb_release 명령이 없습니다.
sborsky

4
lsb_release는 가벼운 패키지가 아닙니다. CUPS를 가져 와서 '/ usr / bin / lp'를 제공합니다. 이는 pdf 번역 구룹을 가져와 일부 렌더링 라이브러리를 가져옵니다 ...
Jens Timmerman

142

/ etc / redhat-release의 내용을 보면 다음과 같습니다.

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

실제 RHEL 시스템의 내용은 다릅니다. 이 기술은 CentOS, Fedora 등을 포함한 모든 RedHat 파생 상품에서 작동합니다.


14
이것은 질문에 가장 적합한 답변입니다.
fsoppelsa

lsb_release가장 먼저 시도해야하지만 파일을보고 설치되지 않았기 때문에 좋은 계획 B입니다.
병아리

1
@chicks 질문에 Redhat 시스템에 대한 테스트가 필요하고 lsb_release는 기본적으로 redhat 시스템에 설치되어 있지 않으며 / etc / redhat-release는 lsb_release가 가장 먼저 시도되는 것이 아닙니다!
bye

@bye (최소한 견해로는) 시도하는 것이 가장 먼저해야합니다. 모든 배포에서 공통적 인 것을 먼저 시도한 다음 배포 관련 솔루션으로 전환하십시오.
Dennis Nolte

25

/ etc / issue 파일을 선호합니다.

$ cat /etc/issue

소프트웨어 호환성 요구 사항 (예 : Dell 또는 HP의 관리 에이전트)을 충족시키기 위해 / etc / redhat-release가 수정 된 많은 상황을 보았습니다.


1
/etc/issueDebian & Ubuntu와 같은 다른 OS에서도 작동하며 Linux Standards Base를 준수하지 않는 Linux OS 및 lsb * 유틸리티가 설치되지 않은 경량 OS에서 작동합니다.
Stefan Lasiewski

5
이것은 신뢰할 수 없습니다. 분명히 이스케이프 시퀀스를 적절한 정보로 대체하는 agetty/etc/issue 로 구문 분석해야합니다 . 당신이 그것을하면, 결과는 압도적 일 수 있습니다. Fedora에서는을 얻습니다 . RHEL7에서는을 얻습니다 . catFedora release 20 (Heisenbug) Kernel \r on an \m (\l)\S Kernel \r on an \m
David Tonhofer

참고 /etc/issue따라서 로컬 관리자에 의해 대체 될 수 있으며 정보의 신뢰성있는 소스 아니다.
Larsks

13

가장 신뢰할 수있는 방법 설치되지는 않습니다 : lsb_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)')

또는 두 개의 "rpm"이 아닌 단일 명령으로 실행됩니다.

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

사용 sed/ cutUNIX 도구를 조작하고 다른 텍스트는 당신이 원하는 것을 얻을 수 있습니다.


2
좀 더 일반적으로 작동하는 것 같습니다 : rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)' sl은 Scientific Linux 용입니다. 다른 RHEL 재 구축의 올바른 이름을 알고 있다면 아래에 주석을 달 수 있습니다. 경고-광범위하게 테스트되지 않았습니다.
Dan Pritts

1
네, 감사합니다. 한 가지 참고 사항 : RHEL Worstation에서는 작동하지 않습니다.
lzap

한 가지 참고 사항-이것은 / etc / foo-release 구문 분석보다 훨씬 느리게 실행됩니다.
Dan Pritts

1
또는 rpm -qa | grep release더 쉽다
warren

6

그것이 진정한 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).


1
rpm -q redhat-release단지 package redhat-release is not installed나를 위해 돌아와서 uname -r커널 릴리스를 알려줍니다.
Mark Booth

아! 그리고 이제 그 시간이 지났습니다. RHEL6은 무엇입니까? RHEL7? 흠 ... 답변은 다음과 같습니다. access.redhat.com/articles/3078#RHEL7
mika

3

나는 선호한다 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

2

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

흥미롭고 유용합니다. 불행히도 현재 RHEL6에는 제한된 가치가 없습니다.
Dan Pritts

1

버전 번호를 얻으려면 다음과 같이 짧고 간단합니다.

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

이것에 늦게 도착했지만 여러 원격 노드에서 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 ~]#

...

많은 컴퓨터에서 원격 작업을 수행하려는 경우 수동 롤 bash 스크립트 대신 Ansible을 사용하는 것이 좋습니다.
Neil Mayhew

또한 ssh를 통한 루트 로그인을 활성화하지 않는 것이 좋습니다
Neil Mayhew
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.