Conozco los comandos para verificar el nombre de la máquina Linux que se ejecuta en mi máquina. Por ejemplo:
Ubuntu
cat /etc/version
CentOS
cat /etc/issue
¿Cómo obtengo el resultado del terminal y lo comparo para ver si es UBUNTU o CENTOS y realizo los siguientes comandos?
apt-get install updates
o
yum update
Ubuntu 14.04
cat /etc/issue
command-line
bash
scripts
shekhar
fuente
fuente
Respuestas:
Desafortunadamente, no existe una forma segura y sencilla de obtener el nombre de la distribución. La mayoría de las principales distribuciones se están moviendo hacia un sistema en el que usan
/etc/os-release
para almacenar esta información. La mayoría de las distribuciones modernas también incluyen laslsb_release
herramientas, pero no siempre se instalan por defecto. Entonces, aquí hay algunos enfoques que puede usar:Utilizar
/etc/os-release
Use las
lsb_release
herramientas si están disponiblesUtilice un script más complejo que debería funcionar para la gran mayoría de las distribuciones:
Analice la información de versión de
gcc
si está instalado:CentOS 5.x
CentOS 6.x
Ubuntu 12.04
Ubuntu 14.04
Básicamente, esto se ha copiado directamente de la gran respuesta de @ slm a mi pregunta aquí .
fuente
<—
Este no es el caso en absoluto. Sylvain Pineau , por ejemplo, exhibió un trivial de una sola línea que consulta de manera confiable el tipo de plataforma actual al diferir a Python, que viene preinstalado en la mayoría de las plataformas (incluido Ubuntu). Los scripts de shell nunca deberían intentar consultar manualmente los metadatos de la plataforma con pruebas no portátiles de bajo nivel del tipo implementado en esta respuesta.awk
cualquiermawk
otra implementación funcionaría igual de bien.lsb_release
:lsb_release -d | awk -F"\t" '{print $2}' | awk -F " " '{print $1}'
lsb_release -d | awk '{print $3}'
ogrep -oP 'VERSION="\K\S+' /etc/os-release
, no es necesario que la doble tubería se active.No necesita bash para realizar dicha tarea, y le sugiero que utilice un enfoque de alto nivel para evitar tratar con archivos como
/etc/version
y/etc/issue
(no tengo / etc / version en 13.10).Entonces mi recomendación es usar este comando en su lugar:
El módulo de plataforma Python funcionará en ambos sistemas, el resto del comando verificará si Ubuntu es devuelto por Python y ejecutará
apt-get
otra cosayum
.fuente
-i
agrep
puede ayudar.Aquí hay una respuesta simple que encuentro que funciona en todas las versiones de Ubuntu / CentOS / RHEL por la mera presencia de los archivos (no es seguro, por supuesto, si alguien está soltando aleatoriamente / etc / redhat-release en sus cajas de Ubuntu, etc.):
fuente
/etc/lsb-release
existe en CloudLinux (CentOS) 6.8, por lo que devolverá ambosyum
yapt-get
.Use Chef para estas tareas. ;-)
En Chef, puedes usar el
platform?
método:O:
O:
O:
fuente
lsb_release
,/etc/os-release
), esta solución tiene la desventaja de requerir Chef - una Infraestructura de peso pesado como Código (IAC) marco no instalado de forma predeterminada en la mayoría de plataformas y que requiere el uso de su propio lenguaje específico de dominio (DSL). En resumen, la mayoría de los usuarios probablemente solo desean diferir a Python , que está instalado de manera predeterminada en la mayoría de las plataformas (incluida Ubuntu) e interactúa bien con las secuencias de comandos de shell.Verifique Ubuntu en el nombre del kernel:
fuente
si solo hay dos distro, entonces puedes acortarlo:
de alguna manera
yum -v
devuelve un valor distinto de cero en CentOS, así que úselo en suwhich
lugar,por supuesto, debe considerar el escenario si no hay
which
instalado.fuente
El siguiente script debería decir si es Ubuntu. Si no es así y la única otra opción que tiene es CentOS, debe tenerlo en una
else
cláusula:fuente
lsb_release
herramienta, que debería leer los mismos archivos.lsb_release -i
informes ya seaDistributor ID: Ubuntu
oDistributor ID: CentOS
en estos casos.Ejecutar
/etc/os-release
en un sub shell y hacer eco de su valor:fuente
Usaría python
fuente
El uso de este comando funciona en CentOS, Ubuntu y Debian:
grep "^NAME=" /etc/os-release |cut -d "=" -f 2 | sed -e 's/^"//' -e 's/"$//'
En Debian cede
Debian GNU/Linux
, en Ubuntu cedeUbuntu
y en CentOS cedeCentOS Linux
.El beneficio de usar grep, cut y sed en lugar de gawk es claro: Debian no tiene gawk instalado por defecto, por lo que no puede confiar en él en un cuadro Debian aleatorio.
fuente