我使用的是什么版本的RHEL?

从shell和没有root权限,我怎么能确定我正在运行的红帽企业Linux版本?

理想情况下,我希望同时获得主要版本和次要版本,例如RHEL 4.0或RHEL 5.1等。

您可以在各种Linux发行版上使用lsb_release命令:

 lsb_release -i -r 

这将告诉你的分发和版本,并比访问可能或可能没有被pipe理员或软件包修改的文件更准确一些。 以及在多个发行版上工作。

对于RHEL,您应该使用:

 cat /etc/redhat-release 

你可以看看/ etc / redhat-release的内容,看起来像这样:

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

内容对于实际的RHEL系统是不同的。 这项技术适用于所有RedHat衍生产品,包括CentOS,Fedora等等。

我更喜欢使用/ etc / issue文件。

 $ cat /etc/issue 

我已经看到许多情况下/ etc / redhat-release已被修改为符合软件兼容性要求(例如Dell或HP的pipe理代理)。

lsb_release 未安装 最可靠的方法是:

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

在最小安装时, lsb_release丢失。

为了使这个工作也与红帽克隆(信用评论):

 # 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工具来获得你想要的。

假设它确实是一个红帽发行版(不是Centos):

 rpm -q redhat-release 

或者运行:

 uname -r 

并映射输出。 2.6.9内核是RHEL4,2.6.18内核是RHEL5。 如有必要,可以将完整版本映射到Red Hat的特定更新版本(即2.6.9-89是RHEL5 U4)。

如果你只想得到版本号,下面的内容就简单明了,因为我可以得到它。

testing了rhel 6.7,rhel 7.2,debian 8.3和ubuntu 14.04:

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

举一个实际的例子,假设你想要testing主要版本和次要版本,并根据这个版本来做:

 #!/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版本:

创build一个期望脚本

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