Определить дистрибутив Linux

Идентификация дистрибутива дело не сложное, для этого есть несколько способов, представленных ниже.

Через компилятор GCC

Самый простой и эффективный способ (работает для большинства систем) это спросить у компилятора GCC (GNU Compiler Collection)

$ gcc -v

Для своего хостера я получил:

Using built-in specs.
Target: amd64-undermydesk-freebsd
Configured with: FreeBSD/amd64 system compiler
Thread model: posix
gcc version 4.2.1 20070831 patched [FreeBSD]

Используя lsb_release (Ubuntu)

$ lsb_release -a

Для своей настольной Ubuntu я получил:

No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu quantal (development branch)
Release:	12.10
Codename:	quantal

Либо через uname

$ uname -a

В настольной Ubuntu:

Linux mihdan-ubuntu 3.2.0-27-generic-pae #43-Ubuntu SMP Fri Jul 6 15:06:05 UTC 2012 i686 i686 i686 GNU/Linux

Через issue (OpenSUSE/Debian)

$ cat /etc/issue
$ cat /etc/issue.net

Через *version (Slackware/Ubuntu)

$ cat /etc/*version

Через *release (Debian/RedHat/Gentoo/Fedora/Ubuntu)

$ cat /etc/*release

Для справки

Дистрибутив Путь
Annvix /etc/annvix-release
Arch Linux /etc/arch-release
Arklinux /etc/arklinux-release
Aurox Linux /etc/aurox-release
BlackCat /etc/blackcat-release
Cobalt /etc/cobalt-release
Conectiva /etc/conectiva-release
Debian /etc/debian_version/etc/debian_release (редко)
Fedora Core /etc/fedora-release
Gentoo Linux /etc/gentoo-release
Immunix /etc/immunix-release
Knoppix knoppix_version
Linux-From-Scratch /etc/lfs-release
Linux-PPC /etc/linuxppc-release
Mandrake /etc/mandrake-release
Mandriva/Mandrake Linux /etc/mandriva-release/etc/mandrake-release/etc/mandakelinux-release
MkLinux /etc/mklinux-release
Novell Linux Desktop /etc/nld-release
PLD Linux /etc/pld-release
Red Hat /etc/redhat-release/etc/redhat_version (редко)
Slackware /etc/slackware-version/etc/slackware-release (редко)
SME Server (Formerly E-Smith) /etc/e-smith-release
Solaris SPARC /etc/release
Sun JDS /etc/sun-release
SUSE Linux /etc/SuSE-release/etc/novell-release
SUSE Linux ES9 /etc/sles-release
Tiny Sofa /etc/tinysofa-release
TurboLinux /etc/turbolinux-release
Ubuntu Linux /etc/lsb-release
UltraPenguin /etc/ultrapenguin-release
UnitedLinux /etc/UnitedLinux-release (covers SUSE SLES8)
VA-Linux/RH-VALE /etc/va-release
Yellow Dog /etc/yellowdog-release

Автоматизируем процесс

Из всего вышесказанного пробуем собрать скрипт

#!/bin/sh
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}

Ссылки

Источник: https://www.kobzarev.com/linux/dist-name/

Михаил Кобзарёв

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

Добавить комментарий

%d такие блоггеры, как: