Conheço os comandos para verificar o nome da máquina Linux em execução na minha máquina. Por exemplo:
Ubuntu
cat /etc/version
CentOS
cat /etc/issue
Como obtenho a saída do terminal e a comparo para ver se é UBUNTU ou CENTOS e execute os seguintes comandos?
apt-get install updates
ou
yum update
Ubuntu 14.04
cat /etc/issue
command-line
bash
scripts
shekhar
fonte
fonte
Respostas:
Infelizmente, não há uma maneira infalível, simples de obter o nome da distribuição. A maioria das grandes distros está se movendo em direção a um sistema em que elas usam
/etc/os-release
para armazenar essas informações. A maioria das distribuições modernas também inclui aslsb_release
ferramentas, mas elas nem sempre são instaladas por padrão. Então, aqui estão algumas abordagens que você pode usar:Usar
/etc/os-release
Use as
lsb_release
ferramentas, se disponíveisUse um script mais complexo que funcione para a grande maioria das distribuições:
Analise as informações da versão
gcc
se estiver instalado:CentOS 5.x
CentOS 6.x
Ubuntu 12.04
Ubuntu 14.04
Basicamente, isso foi copiado diretamente da ótima resposta do @ slm para minha pergunta aqui .
fonte
<—
Este não é o caso. Sylvain Pineau , por exemplo, exibiu um one-liner trivial consultando com segurança o tipo de plataforma atual, adiando para o Python - que vem pré-instalado na maioria das plataformas (incluindo o Ubuntu). Os scripts de shell nunca devem tentar consultar manualmente os metadados da plataforma com testes de nível inferior e não portáteis, do tipo implementado nesta resposta.awk
oumawk
qualquer outra implementação também funcionaria.lsb_release
:lsb_release -d | awk -F"\t" '{print $2}' | awk -F " " '{print $1}'
lsb_release -d | awk '{print $3}'
ougrep -oP 'VERSION="\K\S+' /etc/os-release
não precisará do tubo duplo para ativar.Você não precisa do bash para executar essa tarefa, e eu sugiro usar uma abordagem de alto nível para evitar lidar com arquivos como
/etc/version
e/etc/issue
(eu não tenho o / etc / version na 13.10).Portanto, minha recomendação é usar este comando:
python plataforma módulo irá funcionar em ambos os sistemas, o resto do comando verificará se o Ubuntu é devolvido pelo python e executar
apt-get
outrayum
.fonte
-i
agrep
pode ajudar.Aqui está uma resposta simples que eu acho que funciona em todas as versões do Ubuntu / CentOS / RHEL pela mera presença dos arquivos (não é à prova de falhas, é claro, se alguém soltar aleatoriamente / etc / redhat-release em suas caixas do Ubuntu, etc):
fonte
/etc/lsb-release
existe no CloudLinux (CentOS) 6.8, portanto retornará ambosyum
eapt-get
.Use o Chef para essas tarefas. ;-)
No Chef, você pode usar o
platform?
método:Ou:
Ou:
Ou:
fonte
lsb_release
,/etc/os-release
), esta solução tem a desvantagem de exigir Chef - uma infra-estrutura de pesos pesados como Código (IAC) quadro não instalado por padrão na maioria das plataformas e exigindo o uso de sua própria linguagem específica de domínio (DSL). Em suma, a maioria dos usuários provavelmente apenas deseja adiar para o Python , que é instalado por padrão na maioria das plataformas (incluindo o Ubuntu) e faz uma boa interface com os scripts de shell.Verifique o Ubuntu no nome do kernel:
fonte
se houver apenas duas distribuições, você poderá reduzi-las:
de alguma forma,
yum -v
retorne diferente de zero no CentOS; portanto, use-owhich
; éclaro que você deve considerar o cenário se não houver nenhum
which
instalado.fonte
O script a seguir deve dizer se é o Ubuntu. Caso contrário, e a única outra opção que você tem é o CentOS, você deve incluí-la em uma
else
cláusula:fonte
lsb_release
ferramenta, que deve ler os mesmos arquivos.lsb_release -i
relatóriosDistributor ID: Ubuntu
ouDistributor ID: CentOS
nesses casos.Execute
/etc/os-release
em um sub shell e ecoe seu valor:fonte
Eu usaria python
fonte
O uso deste comando funciona no CentOS, Ubuntu e Debian:
grep "^NAME=" /etc/os-release |cut -d "=" -f 2 | sed -e 's/^"//' -e 's/"$//'
No Debian ele produz
Debian GNU/Linux
, no Ubuntu ele produzUbuntu
e no CentOS ele produzCentOS Linux
.A vantagem de usar grep, cut e sed em vez de gawk é clara: o Debian não possui o gawk instalado por padrão, portanto você não pode confiar nele na caixa Debian aleatória.
fonte