답변:
lsb_release
다양한 Linux 배포 에서 명령을 사용할 수 있습니다 .
lsb_release -i -r
이것은 배포 및 버전을 알려주며 관리자 나 소프트웨어 패키지에 의해 수정되었거나 수정되지 않은 파일에 액세스하는 것보다 약간 더 정확합니다. 여러 배포판에서 작업 할뿐만 아니라
RHEL의 경우 다음을 사용해야합니다.
cat /etc/redhat-release
lsb_release -i -r
-bash : lsb_release : 명령을 찾을 수 없습니다. 그러나 cat /etc/redhat-release
Red Hat Enterprise Linux Server 릴리즈 5.6 (Tikanga)
/ etc / redhat-release의 내용을 보면 다음과 같습니다.
$ cat /etc/redhat-release
CentOS release 5.4 (Final)
실제 RHEL 시스템의 내용은 다릅니다. 이 기술은 CentOS, Fedora 등을 포함한 모든 RedHat 파생 상품에서 작동합니다.
lsb_release
가장 먼저 시도해야하지만 파일을보고 설치되지 않았기 때문에 좋은 계획 B입니다.
/ etc / issue 파일을 선호합니다.
$ cat /etc/issue
소프트웨어 호환성 요구 사항 (예 : Dell 또는 HP의 관리 에이전트)을 충족시키기 위해 / etc / redhat-release가 수정 된 많은 상황을 보았습니다.
/etc/issue
Debian & Ubuntu와 같은 다른 OS에서도 작동하며 Linux Standards Base를 준수하지 않는 Linux OS 및 lsb * 유틸리티가 설치되지 않은 경량 OS에서 작동합니다.
/etc/issue
로 구문 분석해야합니다 . 당신이 그것을하면, 결과는 압도적 일 수 있습니다. Fedora에서는을 얻습니다 . RHEL7에서는을 얻습니다 . cat
Fedora release 20 (Heisenbug) Kernel \r on an \m (\l)
\S Kernel \r on an \m
/etc/issue
따라서 로컬 관리자에 의해 대체 될 수 있으며 정보의 신뢰성있는 소스 아니다.
가장 신뢰할 수있는 방법 설치되지는 않습니다 : 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
/ cut
UNIX 도구를 조작하고 다른 텍스트는 당신이 원하는 것을 얻을 수 있습니다.
rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'
sl은 Scientific Linux 용입니다. 다른 RHEL 재 구축의 올바른 이름을 알고 있다면 아래에 주석을 달 수 있습니다. 경고-광범위하게 테스트되지 않았습니다.
rpm -qa | grep release
더 쉽다
그것이 진정한 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).
rpm -q redhat-release
단지 package redhat-release is not installed
나를 위해 돌아와서 uname -r
커널 릴리스를 알려줍니다.
나는 선호한다 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에있는 파일을 사용 하는 것이 좋습니다.
# 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)
버전 번호를 얻으려면 다음과 같이 짧고 간단합니다.
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
이것에 늦게 도착했지만 여러 원격 노드에서 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 ~]#
...