No shell e sem privilégios de root, como posso determinar qual versão do Red Hat Enterprise Linux estou executando?
Idealmente, eu gostaria de obter a versão principal e secundária, por exemplo, RHEL 4.0 ou RHEL 5.1, etc.
Você pode usar o lsb_release
comando em várias distribuições Linux:
lsb_release -i -r
Isso informará a distribuição e a versão e é um pouco mais preciso do que acessar arquivos que podem ou não ter sido modificados pelo administrador ou por um pacote de software. Além de trabalhar em várias distribuições.
Para RHEL, você deve usar:
cat /etc/redhat-release
lsb_release -i -r
-bash: lsb_release: comando não encontrado. No entanto, ocat /etc/redhat-release
Red Hat Enterprise Linux Server versão 5.6 (Tikanga)Você pode olhar o conteúdo de / etc / redhat-release, que será algo como isto:
O conteúdo é diferente para um sistema RHEL real. Esta técnica funciona em todos os derivados RedHat, incluindo CentOS, Fedora e outros.
fonte
lsb_release
é a primeira coisa a fazer, mas uma vez que não pode ser instalado olha arquivos é um bom plano B.Eu prefiro usar o arquivo / etc / issue.
Eu já vi muitas situações em que o / etc / redhat-release foi modificado para atender aos requisitos de compatibilidade de software (agentes de gerenciamento da Dell ou da HP, por exemplo).
fonte
/etc/issue
também funciona em outros sistemas operacionais, como Debian e Ubuntu, e sistemas operacionais Linux que não estão em conformidade com a Linux Standards Base e sistemas operacionais leves que não têm os utilitários lsb * instalados./etc/issue
deve ser analisado com agetty , que substitui as seqüências de escape por informações apropriadas. Se você apenascat
, o resultado pode ser abaixo do esperado. No Fedora, um recebeFedora release 20 (Heisenbug) Kernel \r on an \m (\l)
, o que lhe diz algo, mas no RHEL7, um recebe\S Kernel \r on an \m
./etc/issue
pode ser substituído pelo administrador local e, portanto, não é uma fonte confiável de informações.A maneira mais confiável quando
lsb_release
não está instalado é:Em instalações mínimas,
lsb_release
está faltando.Para que isso funcione também com os clones da Red Hat (o crédito vai para os comentários):
Ou, como um único comando (em vez de dois "rpm" serem executados):
Use
sed
/cut
e outras ferramentas de manipulação de texto do UNIX para obter o que deseja.fonte
rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'
sl é para o Scientific Linux; se você souber o nome certo para outras reconstruções do RHEL, talvez comente abaixo. Aviso - não extensivamente testado.rpm -qa | grep release
é ainda mais fácilSupondo que seja realmente um lançamento da Red Hat (não o Centos):
Ou apenas execute:
E mapeie a saída. 2.6.9 kernels são RHEL4, 2.6.18 kernels são RHEL5. Se necessário, você pode mapear a versão completa para os lançamentos de atualização específicos da Red Hat (por exemplo, 2.6.9-89 é RHEL5 U4).
fonte
rpm -q redhat-release
apenas retornapackage redhat-release is not installed
para mim euname -r
apenas me diz o lançamento do kernel.Eu prefiro
hostnamectl
:fonte
Eu gosto bastante de usar o
/etc/os-release
arquivo, que está no release RPM:Este arquivo pode ser originado em scripts, como:
fonte
Se você quiser apenas obter os números de versão, o seguinte é o mais curto e simples possível.
Testado no rhel 6.7, rhel 7.2, debian 8.3 e ubuntu 14.04:
Para um exemplo prático, diga que deseja testar a versão principal e secundária da distribuição e faça as coisas com base nisso:
fonte
Cheguei atrasado, mas me diverti tentando descobrir a versão RHEL em vários nós remotos. Portanto, se você tiver um lote de servidores que usam a mesma senha (eu sei, eu sei ...), aqui está uma rápida e suja verificação da versão do RedHat:
Crie um script esperado
Espere que o script verifique a versão principal do RedHat em vários hosts remotos
Execute o script para todos os seus nós
Resultado
fonte