sirve - sistema operativo linux versiones
La mejor manera de encontrar el nombre del sistema operativo y la versiĆ³n en la plataforma Unix/Linux (5)
Con perl y Linux::Distribution , la solución más limpia para un viejo problema:
#!/bin/sh
perl -e ''
use Linux::Distribution qw(distribution_name distribution_version);
my $linux = Linux::Distribution->new;
if(my $distro = $linux->distribution_name()) {
my $version = $linux->distribution_version();
print "you are running $distro";
print " version $version" if $version;
print "/n";
} else {
print "distribution unknown/n";
}
''
Necesito encontrar el nombre y la versión del sistema operativo en la plataforma Unix / Linux. Para esto intenté seguir:
utilidad
lsb_release
/etc/redhat-release
o archivo específico
Pero no parece ser la mejor solución ya que la compatibilidad con LSB_RELEASE ya no es para RHEL 7.
¿Hay alguna forma de que funcione en cualquier plataforma Unix o Linux?
Cualquier ayuda sería muy apreciada.
El comando "lsb_release" proporciona cierta base de Linux estándar e información específica de la distribución. Entonces, usando el siguiente comando podemos obtener el nombre del sistema operativo y la versión del sistema operativo.
" lsb_release -a "
El siguiente comando funcionó muy bien para mí. Le da el nombre y la versión del sistema operativo.
lsb_release -a
En cada distribución tiene archivos de diferencias, así que escribo los más comunes:
---- CentOS Linux distro
`cat /proc/version`
---- Debian Linux distro
`cat /etc/debian_version`
---- Redhat Linux distro
`cat /etc/redhat-release`
---- Ubuntu Linux distro
`cat /etc/issue` or `cat /etc/lsb-release`
en el último / etc / issue no existía, así que probé el segundo y me devolvió la respuesta correcta
Esto funciona bien para todo el entorno Linux.
#!/bin/sh
cat /etc/*-release
En Ubuntu:
$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS"
o 12.04:
$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.4 LTS"
NAME="Ubuntu"
VERSION="12.04.4 LTS, Precise Pangolin"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu precise (12.04.4 LTS)"
VERSION_ID="12.04"
En RHEL:
$ cat /etc/*-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
Red Hat Enterprise Linux Server release 6.5 (Santiago)
O use este script:
#!/bin/sh
# Detects which OS and if it is Linux then it will detect which Linux
# Distribution.
OS=`uname -s`
REV=`uname -r`
MACH=`uname -m`
GetVersionFromFile()
{
VERSION=`cat $1 | tr "/n" '' '' | sed s/.*VERSION.*=/ // `
}
if [ "${OS}" = "SunOS" ] ; then
OS=Solaris
ARCH=`uname -p`
OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
elif [ "${OS}" = "AIX" ] ; then
OSSTR="${OS} `oslevel` (`oslevel -r`)"
elif [ "${OS}" = "Linux" ] ; then
KERNEL=`uname -r`
if [ -f /etc/redhat-release ] ; then
DIST=''RedHat''
PSUEDONAME=`cat /etc/redhat-release | sed s/.*/(// | sed s//)//`
REV=`cat /etc/redhat-release | sed s/.*release/ // | sed s// .*//`
elif [ -f /etc/SuSE-release ] ; then
DIST=`cat /etc/SuSE-release | tr "/n" '' ''| sed s/VERSION.*//`
REV=`cat /etc/SuSE-release | tr "/n" '' '' | sed s/.*=/ //`
elif [ -f /etc/mandrake-release ] ; then
DIST=''Mandrake''
PSUEDONAME=`cat /etc/mandrake-release | sed s/.*/(// | sed s//)//`
REV=`cat /etc/mandrake-release | sed s/.*release/ // | sed s// .*//`
elif [ -f /etc/debian_version ] ; then
DIST="Debian `cat /etc/debian_version`"
REV=""
fi
if [ -f /etc/UnitedLinux-release ] ; then
DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "/n" '' '' | sed s/VERSION.*//`]"
fi
OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"
fi
echo ${OSSTR}