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