# Free Red Hat Linux and Fedora Fedora Core Linux "Fedora $1" fedora $1 `cat /etc/fedora-release 2>/dev/null` =~ /Fedora.*\s([0-9\.]+)\s/i || `cat /etc/fedora-release 2>/dev/null` =~ /Fedora.*\sFC(\S+)\s/i # Red Hat enterprise versions Red Hat Enterprise Linux 3.0AS rhel 3.0 `cat /etc/redhat-release 2>/dev/null` =~ /(3\.0AS)|(2\.9\.5AS)|(AS\s+release\s+3)/i Red Hat Enterprise Linux "$2$1" rhel $2 `cat /etc/redhat-release 2>/dev/null` =~ /(ES|AS|WS)\s+release\s+(\S+)/ Red Hat Enterprise Linux $2 rhel $2 `cat /etc/redhat-release 2>/dev/null` =~ /Red.*Hat\s+Enterprise\s+Linux\s+(Server|Client)\s+release\s+(\d+)/i # Red Hat enterprise clones (binary compatible) Whitebox Linux $1 rhel $1 `cat /etc/whitebox-release 2>/dev/null` =~ /White\s+Box\s+Enterprise\s+Linux\s+release\s+(\S+)/i Tao Linux $1 rhel $1 `cat /etc/redhat-release 2>/dev/null` =~ /Tao\s+Linux\s+release\s+(\S+)/i CentOS Linux $1 rhel $1 `cat /etc/redhat-release 2>/dev/null` =~ /CentOS\s+release\s+([0-9])+(\S)*/i CentOS Linux $2 rhel $2 `cat /etc/centos-release /etc/redhat-release 2>/dev/null` =~ /CentOS\s+(Linux\s+)?release\s+(\S+)/i && $2 >= 4 Scientific Linux $1 rhel $1 `cat /etc/redhat-release 2>/dev/null` =~ /Scientific\s+Linux.*\s+release\s+(\S+)/i && $1 >= 6 # Amazon (CentOS 5+6, plus newer packages, rolling releases) Amazon Linux $1 amazon $1 `cat /etc/system-release 2>/dev/null` =~ /Amazon\s+Linux.*\s(2011\S+)/ Amazon Linux $1 amazon $1 `cat /etc/system-release 2>/dev/null` =~ /Amazon\s+Linux.*\s(2012\S+)/ Amazon Linux $1 amazon $1 `cat /etc/system-release 2>/dev/null` =~ /Amazon\s+Linux.*\s(201[3-9]\S+)/ # Debian Linux versions with numbers Debian Linux $1 debian $1 $etc_issue =~ /Debian.*\s([0-9\.]+)\s/i || `cat /etc/debian_version 2>/dev/null` =~ /([0-9\.]+)/ # Ubuntu (probably needs to get smarter as new versions come out) Ubuntu Linux "$1$2" ubuntu $1 $etc_issue =~ /Ubuntu.*\s([0-9]\.[0-9]+)(\.?[0-9]*)\s/i Ubuntu Linux "$1$2" ubuntu $1 $etc_issue =~ /Ubuntu.*\s(10\.[0-9]+)(\.?[0-9]*)\s/i Ubuntu Linux "$1$2" ubuntu $1 $etc_issue =~ /Ubuntu.*\s(12\.[0-9]+)(\.?[0-9]*)\s/i Ubuntu Linux "$1$2" ubuntu $1 $etc_issue =~ /Ubuntu.*\s(14\.[0-9]+)(\.?[0-9]*)\s/i Ubuntu Linux "$1$2" ubuntu $1 $etc_issue =~ /Ubuntu.*\s(16\.[0-9]+)(\.?[0-9]*)\s/i # Mandrake Linux Mandriva Linux $2 mandrake-linux 10.2 $etc_issue =~ /(Mandrakelinux|Mandriva).*(2006\.\d+)/i || `cat /etc/mandrake-release 2>/dev/null` =~ /(Mandrakelinux|Mandriva).*(2007\.\d+)/i Mandriva Linux $2 mandrake-linux 10.3 $etc_issue =~ /(Mandrakelinux|Mandriva).*(2007\.\d+)/i || `cat /etc/mandrake-release 2>/dev/null` =~ /(Mandrakelinux|Mandriva).*(2007\.\d+)/i # All versions of Gentoo (which don't appear to have version numbers) Gentoo Linux Any version gentoo-linux * -d "/usr/portage" # All FreeBSD versions FreeBSD $1 freebsd $1 $uname =~ /FreeBSD.*?\s([0-9]+\.[0-9\.]+)/i # FreeBSD clones DragonFly BSD 1.0 freebsd 4.8 $uname =~ /DragonFly.*\s1\.0A/i DragonFly BSD 1.2 freebsd 4.10 $uname =~ /DragonFly.*\s1\.2A/i # All OpenBSD versions OpenBSD $1 openbsd $1 $uname =~ /OpenBSD.*\s([0-9\.]+)/i # All NetBSD versions NetBSD 1.5 netbsd 1.5 $uname =~ /NetBSD.*1\.5/i NetBSD 1.6 netbsd 1.6 $uname =~ /NetBSD.*1\.6/i NetBSD 2.0 netbsd 2.0 $uname =~ /NetBSD.*2\.0/i # Apple's OS X versions Mac OS X 10.0 macos 1.3 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.0/i Mac OS X 10.1 macos 1.4 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.1/i Mac OS X 10.2 macos 6.0 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.2/i Mac OS X 10.3 macos 7.0 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.3/i Mac OS X 10.4 macos 8.1 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.4/i # Darwin, the open source version of OS X Darwin $1 macos $1 $uname =~ /Darwin.*\s([0-9\.]+)/ # OpenDarwin OpenDarwin 6.6.1 macos 6.0 OpenDarwin 6.6.2 macos 6.0 OpenDarwin 7.2.1 macos 7.0 # Webmin running under Windows Cygwin 1.1 cygwin 1.1 Cygwin 1.3 cygwin 1.3