2 Pardus Linux 1.0 pardus-linux 1.0 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+1.0\s+/i
3 Pardus Linux 2007 pardus-linux 2007 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2007\s+/i
4 Pardus Linux 2007.1 Felis chaus pardus-linux 2007.1 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2007.1\s+/i
5 Pardus Linux 2007.2 Caracac caracal pardus-linux 2007.2 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2007.2\s+/i
6 Pardus Linux 2007.3 Lynx lynx pardus-linux 2007.3 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2007.3\s+/i
7 Pardus Linux 2008 pardus-linux 2008 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2008\s+/i
8 Pardus Linux 2008.1 Hyaena hyaena pardus-linux 2008.1 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2008.1\s+/i
9 Pardus Linux 2008.2 Canis aureus pardus-linux 2008.2 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2008.2\s+/i
10 Pardus Linux 2009 pardus-linux 2009 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2009\s+/i
11 Pardus Linux 2009.1 Anthropoides virgo pardus-linux 2009.1 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2009.1\s+/i
12 Pardus Linux 2009.2 Geronticus eremita pardus-linux 2009.2 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2009.2\s+/i
13 Pardus Linux 2011 pardus-linux 2011 `cat /etc/pardus-release 2>/dev/null` =~ /Pardus\s+2011\s+/i
16 Sun Solaris 2.5.1 solaris 2.5.1 $uname =~ /SunOS.*\s5\.5\.1\s/i
17 Sun Solaris 2.6 solaris 2.6 $uname =~ /SunOS.*\s5\.6\s/i
18 Sun Solaris $1 solaris $1 $uname =~ /SunOS.*\s5\.(\S+)\s/i
21 Lycoris Desktop/LX 1.0 open-linux 3.1e $etc_issue =~ /Lycoris Desktop/i
24 Caldera OpenLinux eServer 2.3 open-linux 2.3e $etc_issue =~ /OpenLinux.*eServer.*\n.*\s2\.3\s/i
25 Caldera OpenLinux 2.3 open-linux 2.3 $etc_issue =~ /OpenLinux.*\n.*\s2\.3\s/i
26 Caldera OpenLinux 2.4 open-linux 2.4 $etc_issue =~ /OpenLinux.*\n.*\s2\.4\s/i
27 Caldera OpenLinux 2.5 open-linux 2.5 $etc_issue =~ /OpenLinux.*\n.*\s2\.5\s/i || $etc_issue =~ /Caldera.*2000/i
28 Caldera OpenLinux 3.1 open-linux 3.1e $etc_issue =~ /OpenLinux.*3\.1/i
29 Caldera OpenLinux 3.2 open-linux 3.2e $etc_issue =~ /OpenLinux.*3\.2/i
31 # Redhat enterprise clones
32 Asianux Server $1 redhat-linux $1+10.0 `cat /etc/asianux-release 2>/dev/null` =~ /Asianux\s+Server\s+(\d+)/i
33 Asianux $1 redhat-linux $1+10.0 `cat /etc/asianux-release 2>/dev/null` =~ /Asianux\s+release\s+(\d+\.\d+)/i
34 Whitebox Linux $1 redhat-linux 10.0 `cat /etc/whitebox-release 2>/dev/null` =~ /White\s+Box\s+Enterprise\s+Linux\s+release\s+(\S+)/i
35 Tao Linux $1 redhat-linux 10.0 `cat /etc/redhat-release 2>/dev/null` =~ /Tao\s+Linux\s+release\s+(\S+)/i
36 CentOS Linux $1 redhat-linux 10.0 `cat /etc/centos-release /etc/redhat-release 2>/dev/null` =~ /CentOS\s+release\s+(\S+)/i && $1 < 4
37 CentOS Linux $2 redhat-linux $2+8.0 `cat /etc/centos-release /etc/redhat-release 2>/dev/null` =~ /CentOS\s+(Linux\s+)?release\s+(\S+)/i && $2 >= 4
38 Scientific Linux $1 redhat-linux 10.0 `cat /etc/redhat-release 2>/dev/null` =~ /Scientific\s+Linux.*\s+release\s+(\S+)/i && $1 < 4
39 Scientific Linux $1 redhat-linux $1+8.0 `cat /etc/redhat-release 2>/dev/null` =~ /Scientific\s+Linux.*\s+release\s+(\d+)/i && $1 >= 4
40 Gralinux $1 redhat-linux $2+8.0 `cat /etc/redhtat-release 2>/dev/null` =~ /Gralinux\s+(ES|AS|WS)\s+release\s+(\d+)/i
41 NeoShine Linux $1 redhat-linux $1+10 `cat /etc/neoshine-release 2>/dev/null` =~ /NeoShine\s+Linux.*release\s+(\d+)/i
42 Endian Firewall Linux $1 redhat-linux $1+10.0 `cat /etc/endian-release 2>/dev/null` =~ /release\s+(\S+)/
43 Oracle Enterprise Linux $2 redhat-linux $2+8.0 `cat /etc/enterprise-release 2>/dev/null` =~ /Enterprise.*Linux\s+Enterprise\s+Linux\s+Server\s+release\s+(\d+)/i
44 Oracle VM $2 redhat-linux $2+8.0 `cat /etc/ovs-release 2>/dev/null` =~ /Oracle.*VM\s+server\s+release\s+(\d+)/i
45 XenServer Linux $1 redhat-linux 13.0 `cat /etc/redhat-release 2>/dev/null` =~ /XenServer\s+release\s+5\./
47 # Redhat enterprise versions
48 Redhat Enterprise Linux 2.1AS redhat-linux 7.3 `cat /etc/redhat-release 2>/dev/null` =~ /(Advanced\s+Server.*2\.1)|(AS.*2\.1)/i
49 Redhat Enterprise Linux 2.1ES redhat-linux 7.3 `cat /etc/redhat-release 2>/dev/null` =~ /ES.*2\.1/
50 Redhat Enterprise Linux 2.1WS redhat-linux 7.3 `cat /etc/redhat-release 2>/dev/null` =~ /WS.*2\.1/
51 Redhat Enterprise Linux 3.0AS redhat-linux 10.0 `cat /etc/redhat-release 2>/dev/null` =~ /(3\.0AS)|(2\.9\.5AS)|(AS\s+release\s+3)/i
52 Redhat Enterprise Linux "$2$1" redhat-linux $2 >= 4 ? $2+8.0 : 10.0 `cat /etc/redhat-release 2>/dev/null` =~ /(ES|AS|WS)\s+release\s+(\S+)/
53 Redhat Enterprise Linux $2 redhat-linux $2+8.0 `cat /etc/redhat-release 2>/dev/null` =~ /Red.*Hat\s+Enterprise\s+Linux\s+(Server|Client|Workstation)\s+release\s+(\d+)/i
55 # Redhat enterprise desktop
56 Redhat Linux Desktop $1 redhat-linux 10.0 `cat /etc/redhat-release 2>/dev/null` =~ /Desktop\s+release\s+(\S+)/i || `cat /etc/redhat-release 2>/dev/null` =~ /ES\s+release\s+(\S+)/i
59 AlphaCore Linux $1 redhat-linux 11.0 `cat /etc/alphacore-release 2>/dev/null` =~ /Alpha\s*Core\s+release\s+(\S+)\s/i
60 X/OS Linux $1 redhat-linux sprintf("%.1f", 9.0+$1) `cat /etc/redhat-release /etc/fedora-release 2>/dev/null` =~ /X\/OS.*release\s(\S+)\s/i
61 Haansoft Linux $1 redhat-linux 10.0 `cat /etc/Haansoft-release 2>/dev/null` =~ /Haansoft\s+Linux\s+OS\s+release\s+(\S+)/i
62 cAos Linux $1 redhat-linux sprintf("%.1f", 10.0+$1) `cat /etc/caos-release 2>/dev/null` =~ /release\s+(\S+)/i
63 Wind River Linux 3.0 redhat-linux 18.0 `cat /etc/wrs-release 2>/dev/null` =~ /Wind\s+River\s+Linux\s+3\.0/
64 Wind River Linux 2.0 redhat-linux 16.0 `cat /etc/wrs-release 2>/dev/null` =~ /Wind\s+River\s+Linux\s+2\.0/
67 Amazon Linux $1 redhat-linux 20.0 `cat /etc/system-release 2>/dev/null` =~ /Amazon\s+Linux.*\s2011/
69 # Free Redhat Linux and Fedora
70 Redhat Linux $1 redhat-linux $1 `cat /etc/redhat-release 2>/dev/null` =~ /red.*hat.*release\s+(\S+)/i && `cat /etc/redhat-release 2>/dev/null` !~ /[eE]nterprise|AS|ES|WS|[aA]dvanced/
71 Redhat Linux "Fedora $1" redhat-linux sprintf("%.1f", 9.0+$1) `cat /etc/redhat-release /etc/fedora-release 2>/dev/null` =~ /Fedora.*\s([0-9\.]+)\s/i || `cat /etc/redhat-release /etc/fedora-release 2>/dev/null` =~ /Fedora.*\sFC(\S+)\s/i
74 White Dwarf Linux 2.1.0 slackware-linux 8.1 `cat /tmp/wd/version 2>/dev/null` =~ /2\.1\.0/
75 Slamd64 Linux $1 slackware-linux 11.1 `cat /etc/slamd64-version 2>/dev/null` =~ /\s([0-9\.]+)/
78 Slackware Linux $1 slackware-linux $1 `cat /etc/slackware-version 2>/dev/null` =~ /Slackware ([0-9\.]+)/i
81 Xandros Linux 2.0 debian-linux 3.0 $etc_issue =~ /Xandros.*\s2\.0/i
82 Xandros Linux 3.0 debian-linux 3.1 $etc_issue =~ /Xandros.*\s3\.0/i
83 Xandros Linux $1 debian-linux 3.2 $etc_issue =~ /Xandros.*\s(4\.\d+)/i
84 APLINUX 1.3 debian-linux 3.1 $etc_issue =~ /APLINUX.*1\.3/i
85 BigBlock $1 suse-linux 8.2 `cat /etc/bigblock-revision 2>/dev/null` =~ /Version:\s(1[0-9\.-]+)\s/i
86 BigBlock $1 debian-linux 3.0 `cat /etc/bigblock-revision 2>/dev/null` =~ /Version:\s(2[0-9\.-]+)\s/i
87 Ubuntu Linux $1 debian-linux 4.0 $etc_issue =~ /Ubuntu.*\sgutsy/i
88 Ubuntu Linux $1 debian-linux 4.0 $etc_issue =~ /Ubuntu.*\s(7\.[0-9\.]+)\s/i
89 Ubuntu Linux $1 debian-linux 4.0 $etc_issue =~ /Ubuntu.*\s(8\.[0-9\.]+)\s/i
90 Ubuntu Linux $1 debian-linux 5.0 $etc_issue =~ /Ubuntu.*\s(9\.[0-9\.]+)\s/i
91 Ubuntu Linux $1 debian-linux 5.0 $etc_issue =~ /Ubuntu.*\s(10\.[0-9\.]+)\s/i
92 Ubuntu Linux $1 debian-linux 6.0 $etc_issue =~ /Ubuntu.*\s(11\.[0-9\.]+)\s/i || $etc_issue =~ /Ubuntu\s+natty/i
93 Ubuntu Linux $1 debian-linux 3.1 $etc_issue =~ /Ubuntu.*\s([0-9\.]+)\s/i
94 Mepis Linux $1 debian-linux $1 $etc_issue =~ /MEPIS/ && `cat /etc/debian_version 2>/dev/null` =~ /([0-9\.]+)/
95 Mepis Linux $1 debian-linux 4.0 $etc_issue =~ /MEPIS/ && `cat /etc/debian_version 2>/dev/null` =~ /(stable)/
97 # Linux Mint (Mint should be before Debian to avoid false-positive)
98 Linux Mint 6 debian-linux 5.0 `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 6 Felicia"/
99 Linux Mint 7 debian-linux 5.0 `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 7 Gloria"/
100 Linux Mint 8 debian-linux 6.0 `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 8 Helena"/
101 Linux Mint 9 debian-linux 6.0 `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 9 Isadora"/
102 Linux Mint 10 debian-linux 6.0 `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 10 Julia"/
103 Linux Mint 11 debian-linux 6.0 `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 11 Katya"/
105 # Debian Linux versions with numbers
106 Debian Linux $1 debian-linux $1 $etc_issue =~ /Debian.*\s([0-9\.]+)\s/i || `cat /etc/debian_version 2>/dev/null` =~ /([0-9\.]+)/
107 Debian Linux 2.0 debian-linux 2.0 `cat /etc/debian_version 2>/dev/null` =~ /^(hamm)/i
108 Debian Linux 2.1 debian-linux 2.1 `cat /etc/debian_version 2>/dev/null` =~ /^(slink)/i
109 Debian Linux 2.2 debian-linux 2.2 `cat /etc/debian_version 2>/dev/null` =~ /^(potato)/i
110 Debian Linux 3.0 debian-linux 3.0 `cat /etc/debian_version 2>/dev/null` =~ /^(woody)/i
111 Debian Linux 3.1 debian-linux 3.1 `cat /etc/debian_version 2>/dev/null` =~ /^(sarge)/i
112 Debian Linux 4.0 debian-linux 4.0 `cat /etc/debian_version 2>/dev/null` =~ /^(etch)/i
113 Debian Linux 5.0 debian-linux 5.0 `cat /etc/debian_version 2>/dev/null` =~ /^(lenny)/i
114 Debian Linux 6.0 debian-linux 6.0 `cat /etc/debian_version 2>/dev/null` =~ /^(squeeze)/i
115 Debian Linux 7.0 debian-linux 7.0 `cat /etc/debian_version 2>/dev/null` =~ /^(wheezy)/i
116 # These change sometimes...
117 Debian Linux 5.0 debian-linux 5.0 `cat /etc/debian_version 2>/dev/null` =~ /^(stable)/i
118 # These don't have a version number yet, so we use the one from "stable"
119 Debian Linux 5.0 debian-linux 5.0 `cat /etc/debian_version 2>/dev/null` =~ /^(testing)/i
120 Debian Linux 6.0 debian-linux 6.0 `cat /etc/debian_version 2>/dev/null` =~ /^(unstable)/i
121 Debian Linux 6.0 debian-linux 6.0 `cat /etc/debian_version 2>/dev/null` =~ /^(sid)/i
123 # SuSE enterprise versions
124 SuSE OpenExchange Linux $1 suse-linux 8.2 `cat /etc/SLOX-release 2>/dev/null` =~ /VERSION\s+=\s+(\S+)/i
125 SuSE SLES Linux $1 suse-linux sprintf("%.1f", $1) $etc_issue =~ /SuSE\s+SLES-(\S+)/i
128 SuSE Linux $1 suse-linux $1 `cat /etc/SuSE-release 2>/dev/null` =~ /([0-9\.]+)/ || $etc_issue =~ /SuSE\s+Linux\s+(\S+)\s/i
130 # United Linux only ever had version 1.0 I think
131 United Linux $1 united-linux $1 `cat /etc/UnitedLinux-release 2>/dev/null` =~ /([0-9\.]+)/
134 Corel Linux $1 corel-linux $1 $etc_issue =~ /Corel\s+LINUX\s+(\S+)/i
137 TurboLinux $1 turbo-linux sprintf("%.1f", $1) `cat /etc/turbolinux-release 2>/dev/null` =~ /([0-9\.]+)/i
139 # Cobalt Linux, from the Raq and Qube systems
140 Cobalt Linux $1 cobalt-linux $1 $etc_issue =~ /Cobalt\s+Linux\s+release\s+(\S+)/i || `cat /etc/cobalt-release 2>/dev/null` =~ /([0-9\.]+)/
141 Cobalt Linux 6.4 cobalt-linux 6.4 `uname -r` =~ /2.2.16/ && -r "/etc/cobalt-release"
144 Mandrake Linux Corporate Server 1.0 redhat-linux 6.2 $etc_issue =~ /Mandrake\s+Corporate\s+Server\s+release\s+1\.0/i
146 # Mandrake derivatives
147 pclinuxos Linux 2005 mandrake-linux 10.0 `cat /etc/mandrake-release 2>/dev/null` =~ /pclinuxos\s+Linux\s+release\s+2005/i
148 pclinuxos Linux 2006 mandrake-linux 10.2 `cat /etc/mandrake-release 2>/dev/null` =~ /pclinuxos\s+Linux\s+release\s+2006/i
149 pclinuxos Linux 2007 mandrake-linux 10.3 `cat /etc/mandrake-release 2>/dev/null` =~ /PCLinuxOS\s+release\s+2007/i
150 pclinuxos Linux 2008 mandrake-linux 10.4 `cat /etc/mandrake-release 2>/dev/null` =~ /PCLinuxOS\s+release\s+2008/i
151 pclinuxos Linux 2009 mandrake-linux 10.5 `cat /etc/mandrake-release 2>/dev/null` =~ /PCLinuxOS\s+release\s+2009/i
154 Mandrake Linux 5.3 redhat-linux 5.0 $etc_issue =~ /Mandrake\s+release\s+5\.3/i
155 Mandrake Linux 6.0 redhat-linux 6.0 $etc_issue =~ /Mandrake\s+release\s+6\.0/i
156 Mandrake Linux 6.1 redhat-linux 6.0 $etc_issue =~ /Mandrake\s+release\s+6\.1/i
157 Mandrake Linux 7.0 redhat-linux 6.1 $etc_issue =~ /Mandrake\s+release\s+7\.0/i
158 Mandrake Linux 7.1 redhat-linux 6.2 $etc_issue =~ /Mandrake\s+release\s+7\.1/i
159 Mandrake Linux $1 mandrake-linux $1 `cat /etc/mandrake-release 2>/dev/null` =~ /Mandrake.*?([0-9\.]+)/i || $etc_issue =~ /Mandrake\s+release\s+([0-9\.]+)/i || $etc_issue =~ /Mandrakelinux\s+release\s+([0-9\.]+)/i
162 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
163 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
164 Mandriva Linux $2 mandrake-linux 10.4 $etc_issue =~ /(Mandrakelinux|Mandriva).*(2008\.\d+)/i || `cat /etc/mandrake-release 2>/dev/null` =~ /(Mandrakelinux|Mandriva).*(2008\.\d+)/i
165 Mandriva Linux $2 mandrake-linux 10.5 $etc_issue =~ /(Mandrakelinux|Mandriva).*(2009\.\d+)/i || `cat /etc/mandrake-release 2>/dev/null` =~ /(Mandrakelinux|Mandriva).*(2009\.\d+)/i
166 Mandriva Linux $2 mandrake-linux $2 $etc_issue =~ /(Mandriva).*(20\d\d\.\d+)/i || `cat /etc/mandriva-release 2>/dev/null` =~ /(Mandriva).*(20\d\d\.\d+)/i
169 Mandrake Linux Corporate Server $i mandrake-linux $i $etc_issue =~ /Mandrake\s+Linux\s+Corporate\s+Server\s+release\s+([0-9\.]+)/i
170 Mandriva Linux Enterprise Server 5.0 mandrake-linux 2009 $etc_issue =~ /Mandriva\s+Linux\s+Enterprise\s+Server\s+release\s+5\.0\s+\(Official\)\s+for\s+(i586|x86_64)/i
172 # Conectiva Linux (now subsumed into Mandrake?)
173 Conectiva Linux 3.0 redhat-linux 5.2 $etc_issue =~ /Conectiva.*Linux.*3\.0/i
174 Conectiva Linux 4.0 redhat-linux 6.0 $etc_issue =~ /Conectiva.*Linux.*4\.0/i
175 Conectiva Linux 4.1 redhat-linux 6.1 $etc_issue =~ /Conectiva.*Linux.*4\.1/i
176 Conectiva Linux 4.2 redhat-linux 6.1 $etc_issue =~ /Conectiva.*Linux.*4\.2/i
177 Conectiva Linux 5.0 redhat-linux 6.2 $etc_issue =~ /Conectiva.*Linux.*5\.0/i
178 Conectiva Linux 5.1 redhat-linux 6.2 $etc_issue =~ /Conectiva.*Linux.*5\.1/i
179 Conectiva Linux 6.0 redhat-linux 7.0 $etc_issue =~ /Conectiva.*Linux.*6\.0/i
180 Conectiva Linux 7.0 redhat-linux 7.1 $etc_issue =~ /Conectiva.*Linux.*7\.0/i
181 Conectiva Linux 8 redhat-linux 7.3 $etc_issue =~ /Conectiva.*Linux.*\s8/i
182 Conectiva Linux 9 redhat-linux 8.0 $etc_issue =~ /Conectiva.*Linux.*\s9/i
183 Conectiva Linux 10 redhat-linux 10.0 $etc_issue =~ /Conectiva.*Linux.*\s10\s/i
186 ThizLinux Desktop 5.0 redhat-linux 7.2 $etc_issue =~ /Thiz.*Linux.*\s5\.0/i
187 ThizLinux Desktop 6.0 redhat-linux 7.3 $etc_issue =~ /Thiz.*Linux.*\s6\.0/i
188 ThizLinux Desktop 6.2 redhat-linux 7.3 $etc_issue =~ /Thiz.*Linux.*\s6\.2/i
189 ThizLinux Desktop 7.0 redhat-linux 8.0 $etc_issue =~ /Thiz.*Linux.*\s7\.0/i
192 ThizServer 4.3 redhat-linux 7.1 $etc_issue =~ /Thiz.*\s?Server.*\s4\.3/i
193 ThizServer 6.0 redhat-linux 7.3 $etc_issue =~ /Thiz.*\s?Server.*\s6\.0/i
194 ThizServer 7.0 redhat-linux 8.0 $etc_issue =~ /Thiz.*\s?Server.*\s7\.0/i
196 # MSC Linux, which used date-based versions (no longer released)
197 MSC Linux January 2001 msc-linux 2001.2 `cat /etc/msclinux-release 2>/dev/null` =~ /2001.*January/i || $etc_issue =~ /2001.*January/i
198 MSC Linux February 2001 msc-linux 2001.2 `cat /etc/msclinux-release 2>/dev/null` =~ /2001.*February/i || $etc_issue =~ /2001.*February/i
199 MSC Linux May 2001 msc-linux 2001.5 `cat /etc/msclinux-release 2>/dev/null` =~ /2001.*May/i || $etc_issue =~ /2001.*May/i
200 MSC Linux June 2001 msc-linux 2001.6 `cat /etc/msclinux-release 2>/dev/null` =~ /2001.*June/i || $etc_issue =~ /2001.*June/i
201 MSC Linux August 2001 msc-linux 2001.8 `cat /etc/msclinux-release 2>/dev/null` =~ /2001.*August/i || $etc_issue =~ /2001.*August/i
202 MSC Linux February 2002 msc-linux 2002.2 `cat /etc/msclinux-release 2>/dev/null` =~ /2002.*February/i || $etc_issue =~ /2002.*February/i
203 MSC Linux March 2002 msc-linux 2002.3 `cat /etc/msclinux-release 2>/dev/null` =~ /2002.*March/i || $etc_issue =~ /2002.*March/i
204 MSC Linux May 2002 msc-linux 2002.5 `cat /etc/msclinux-release 2>/dev/null` =~ /2002.*May/i || $etc_issue =~ /2002.*May/i
205 MSC Linux July 2002 msc-linux 2002.7 `cat /etc/msclinux-release 2>/dev/null` =~ /2002.*July/i || $etc_issue =~ /2002.*July/i
206 MSC Linux Nov 2002 msc-linux 2002.11 `cat /etc/msclinux-release 2>/dev/null` =~ /2002.*Nov/i || $etc_issue =~ /2002.*Nov/i
208 # SCI Linux, which has replaced MSC Linux
209 SCI Linux 2003 Summer msc-linux 2003.6 `cat /etc/scilinux-relase 2>/dev/null` =~ /2003.*Summer/i
210 SCI Linux 2004 Summer msc-linux 2004.6 `cat /etc/scilinux-relase 2>/dev/null` =~ /2004.*Summer/i
211 SCI Linux 2005 Summer msc-linux 2005.6 `cat /etc/scilinux-relase 2>/dev/null` =~ /2005.*Summer/i
214 LinuxPPC 2000 redhat-linux 6.1 $etc_issue =~ /LinuxPPC\s+2000/i
217 Trustix SE $1 trustix-linux sprintf("%.1f", $1) $etc_issue =~ /Trustix.*Enterprise.*([0-9\.]+)/i
220 Trustix 1.1 redhat-linux 6.2 $etc_issue =~ /Trustix.*1\.1/i
221 Trustix 1.2 redhat-linux 7.0 $etc_issue =~ /Trustix.*1\.2/i
222 Trustix 1.5 redhat-linux 7.1 $etc_issue =~ /Trustix.*1\.5/i
223 Trustix $1 trustix-linux $1 $etc_issue =~ /Trustix.*\s([0-9\.]+)/i
226 Tawie Server Linux $1 trustix-linux $1 $etc_issue =~ /Tawie\s+Server\s+Linux.*([0-9\.]+)/i
227 TinySofa Linux 1.0 trustix-linux 2.0 $etc_issue =~ /tinysofa.*release\s+1\.0/i
228 TinySofa Linux Classic 2.0 trustix-linux 2.2 `cat /etc/tinysofa-release 2>/dev/null` =~ /classic.*release\s+2\.0/i
229 TinySofa Linux Enterprise 2.0 redhat-linux 11.0 `cat /etc/tinysofa-release 2>/dev/null` =~ /enterprise.*release\s+2\.0/i
231 # Cendio Linux (discontinued?)
232 Cendio LBS Linux 3.1 redhat-linux 6.1 $etc_issue =~ /Cendio\s*LBS.*\s3\.1/i || `cat /etc/lbs-release 2>/dev/null` =~ /3\.1/
233 Cendio LBS Linux 3.2 redhat-linux 6.2 $etc_issue =~ /Cendio\s*LBS.*\s3\.2/i || `cat /etc/lbs-release 2>/dev/null` =~ /3\.2/
234 Cendio LBS Linux 3.3 redhat-linux 6.2 $etc_issue =~ /Cendio\s*LBS.*\s3\.3/i || `cat /etc/lbs-release 2>/dev/null` =~ /3\.3/
235 Cendio LBS Linux 4.0 redhat-linux 7.1 $etc_issue =~ /Cendio\s*LBS.*\s4\.0/i || `cat /etc/lbs-release 2>/dev/null` =~ /4\.0/
236 Cendio LBS Linux 4.1 redhat-linux 7.1 $etc_issue =~ /Cendio\s*LBS.*\s4\.1/i || `cat /etc/lbs-release 2>/dev/null` =~ /4\.1/
238 # Ute Linux (never got beyond 1.0)
239 Ute Linux 1.0 redhat-linux 6.2 `cat /etc/ute-release 2>/dev/null` =~ /Ute\s+Linux\s+release\s+1\.0/i
241 # Lanthan Linux (appears to be dead)
242 Lanthan Linux 1.0 redhat-linux 6.2 $etc_issue =~ /Lanthan\s+Linux\s+release\s+1\.0/i || `cat /etc/lanthan-release 2>/dev/null` =~ /1\.0/
243 Lanthan Linux 2.0 redhat-linux 7.0 $etc_issue =~ /Lanthan\s+Linux\s+release\s+2\.0/i || `cat /etc/lanthan-release 2>/dev/null` =~ /2\.0/
244 Lanthan Linux 3.0 redhat-linux 7.1 $etc_issue =~ /Lanthan\s+Linux\s+release\s+3\.0/i || `cat /etc/lanthan-release 2>/dev/null` =~ /3\.0/
246 # Yellow Dog Linux, for PPC
247 Yellow Dog Linux 2.0 redhat-linux 7.0 $etc_issue =~ /Yellow\s+Dog\s+Linux\s+release\s+2\.0\s+/i || `cat /etc/yellowdog-release 2>/dev/null` =~ /Yellow\s+Dog\s+Linux\s+release\s+2\.0\s+/i
248 Yellow Dog Linux 2.1 redhat-linux 7.1 $etc_issue =~ /Yellow\s+Dog\s+Linux\s+release\s+2\.1\s+/i || `cat /etc/yellowdog-release 2>/dev/null` =~ /Yellow\s+Dog\s+Linux\s+release\s+2\.1\s+/i
249 Yellow Dog Linux 2.2 redhat-linux 7.2 $etc_issue =~ /Yellow\s+Dog\s+Linux\s+release\s+2\.2\s+/i || `cat /etc/yellowdog-release 2>/dev/null` =~ /Yellow\s+Dog\s+Linux\s+release\s+2\.2\s+/i
250 Yellow Dog Linux 2.3 redhat-linux 8.0 $etc_issue =~ /Yellow\s+Dog\s+Linux\s+release\s+2\.3\s+/i || `cat /etc/yellowdog-release 2>/dev/null` =~ /Yellow\s+Dog\s+Linux\s+release\s+2\.3\s+/i
251 Yellow Dog Linux 3.0 redhat-linux 9.0 $etc_issue =~ /Yellow\s+Dog\s+Linux\s+release\s+3\.0\s+/i || `cat /etc/yellowdog-release 2>/dev/null` =~ /Yellow\s+Dog\s+Linux\s+release\s+3\.0\s+/i
252 Yellow Dog Linux 4.0 redhat-linux 11.0 $etc_issue =~ /Yellow\s+Dog\s+Linux\s+release\s+4\.0\s+/i || `cat /etc/yellowdog-release 2>/dev/null` =~ /\s4\.0\s/i
254 # Latinux (appears to be discontinued?)
255 Corvus Latinux 8.0 redhat-linux 7.1 `cat /etc/latinux-release 2>/dev/null` =~ /Latinux\s+8\s/i
257 # Immunix Linux (discontinued)
258 Immunix Linux $1 redhat-linux $1 $etc_issue =~ /Immunix.*\s([0-9\.]+)/i || `cat /etc/immunix-release 2>/dev/null` =~ /([0-9\.]+)/
260 # All versions of Gentoo (which don't appear to have version numbers)
261 Gentoo Linux Any version gentoo-linux * -d "/usr/portage"
263 # Secure Linux (now called Trustix?)
264 Secure Linux 1.0 redhat-linux 7.2 `cat /etc/securelinux-release 2>/dev/null` =~ /SecureLinux.*1\.0/i
267 OpenNA Linux 1.0 redhat-linux 9.0 `cat /etc/openna-release 2>/dev/null` =~ /release\s+1\.0\s/i
268 OpenNA Linux 2.0 redhat-linux 10.0 `cat /etc/openna-release 2>/dev/null` =~ /release\s+2\.0\s/i
271 SoL Linux 17.00 sol-linux 17.00 -r "/etc/antitachyon-distribution" && `uname -r` =~ /2\.4\./
272 SoL Linux 18.00 sol-linux 18.00 -r "/etc/antitachyon-distribution" && `uname -r` =~ /2\.6\./
275 Coherent Technology Linux $1 coherent-linux $1 $etc_issue =~ /coherent\s*technology.*\s([0-9\.]+)/i || `cat /etc/coherent-release 2>/dev/null` =~ /([0-9\.]+)/
277 # Linux for the playstation
278 Playstation Linux 1.0 redhat-linux 6.2 $etc_issue =~ /PS2\s+Linux\s+release\s+1.0/i
281 StartCom Linux $1 redhat-linux 10.0 `cat /etc/startcom-release 2>/dev/null` =~ /([0-9\.]+)/
284 Yoper Linux 2.0 redhat-linux 10.0 `cat /etc/yoper-release 2>/dev/null` =~ /Yoper\s+Linux\s+2.0/i
285 Yoper Linux 2.1 redhat-linux 11.0 `cat /etc/yoper-release 2>/dev/null` =~ /Yoper\s+Linux\s+2.1/i
286 Yoper Linux 2.2 redhat-linux 12.0 `cat /etc/yoper-release 2>/dev/null` =~ /Yoper\s+Linux\s+2.2/i
289 Caixa Magica 8.1 suse-linux 8.0 `cat /etc/CxM-release 2>/dev/null` =~ /8\.1/ || $etc_issue =~ /Caixa\s+8\.1\s/i
290 Caixa Magica 10.0 suse-linux 9.2 `cat /etc/CxM-release 2>/dev/null` =~ /10\.0/ || $etc_issue =~ /Caixa\s+10\.0\s/i
293 openmamba Linux $1 openmamba-linux $1 `cat /etc/openmamba-release 2>/dev/null` =~ /openmamba\s+release\s+(\S+)/i
295 # All FreeBSD versions
296 FreeBSD $1 freebsd $1 $uname =~ /FreeBSD.*?\s([0-9]+\.[0-9\.]+)/i
299 DragonFly BSD 1.0 freebsd 4.8 $uname =~ /DragonFly.*?\s1\.0A/i
300 DragonFly BSD 1.2 freebsd 4.10 $uname =~ /DragonFly.*?\s1\.2A/i
302 # All OpenBSD versions
303 OpenBSD $1 openbsd $1 $uname =~ /OpenBSD.*?\s([0-9\.]+)/i
305 # All NetBSD versions
306 NetBSD 1.5 netbsd 1.5 $uname =~ /NetBSD.*1\.5/i
307 NetBSD 1.6 netbsd 1.6 $uname =~ /NetBSD.*1\.6/i
308 NetBSD 2.0 netbsd 2.0 $uname =~ /NetBSD.*2\.0/i
309 NetBSD 3.0 netbsd 3.0 $uname =~ /NetBSD.*3\.0/i
310 NetBSD 4.0 netbsd 4.0 $uname =~ /NetBSD.*4\.0/i
311 NetBSD $1 netbsd $1 `uname` =~ /NetBSD/ && `uname -r` =~ /([\d.]+)/
313 # BSDI (may not be detected properly)
314 BSDI $1 freebsd $1 $uname =~ /BSDI.*\s([0-9\.]+)/i
317 HP/UX $1 hpux $1 $uname =~ /HP-UX.*(1[01]\.[0-9\.]+)/
320 SGI Irix $1 irix $1 $uname =~ /IRIX.*([0-9]+\.[0-9]+)/i
322 # DEC OSF/1 or Tru64 (discontinued)
323 DEC/Compaq OSF/1 4.0 osf1 4.0 $uname =~ /OSF1.*4\.0/
324 DEC/Compaq OSF/1 5.1 osf1 5.1 $uname =~ /OSF1.*V5.1/
327 IBM AIX "$2.$1" aix "$2.$1" $uname =~ /AIX\s+\S+\s+(\d+)\s+(\d+)\s+/i
329 # SCO's operating systems (no longer developed)
330 SCO UnixWare 2 unixware 2
331 SCO UnixWare 7 unixware 7
332 SCO UnixWare 8 unixware 8
333 SCO OpenServer 5 openserver 5 $uname =~ /SCO_SV.*\s5\./i
334 SCO OpenServer 6 openserver 6 $uname =~ /SCO_SV.*\s6\./i
336 # Apple's OS X versions
337 Mac OS X 10.0 macos 1.3 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.0/i
338 Mac OS X 10.1 macos 1.4 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.1/i
339 Mac OS X 10.2 macos 6.0 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.2/i
340 Mac OS X 10.3 macos 7.0 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.3/i
341 Mac OS X 10.4 macos 8.1 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.4/i
342 Mac OS X 10.5 macos 9.2 `sw_vers 2>/dev/null` =~ /ProductVersion:\s+10\.5/i
344 # Darwin, the open source version of OS X
345 Darwin $1 macos $1 $uname =~ /Darwin.*\s([0-9\.]+)/
348 OpenDarwin 6.6.1 macos 6.0
349 OpenDarwin 6.6.2 macos 6.0
350 OpenDarwin 7.2.1 macos 7.0
352 # Webmin running under Windows
353 Cygwin 1.1 cygwin 1.1
354 Cygwin 1.3 cygwin 1.3
356 # Sun's desktop Linux and Solaris systems
357 Sun Java Desktop System 1.0 (Linux) suse-linux 9.1 `cat /etc/SuSE-release 2>/dev/null` =~ /Java Desktop System.*\nVERSION = 1\.0/i
358 Sun Java Desktop System 2.0 (Linux) suse-linux 9.2 `cat /etc/SuSE-release 2>/dev/null` =~ /Java Desktop System.*\nVERSION = 2\.0/i
359 Sun Java Desktop System 3.0 (Linux) suse-linux 9.2 `cat /etc/SuSE-release 2>/dev/null` =~ /Java Desktop System.*\nVERSION = 3\.0/i
360 Sun Java Desktop System 2.0 (Solaris) solaris 9 $uname =~ /SunOS.*\s5\.9\s/i && `cat /etc/sun-release 2>/dev/null` =~ /Sun\s+Java\s+Desktop/
362 # All other Linux variants, identified by kernel version
363 Generic Linux 2.0 generic-linux 2.0 `uname -r` =~ /2\.0\./
364 Generic Linux 2.2 generic-linux 2.2 `uname -r` =~ /2\.2\./
365 Generic Linux 2.4 generic-linux 2.4 `uname -r` =~ /2\.4\./
366 Generic Linux 2.5 generic-linux 2.5 `uname -r` =~ /2\.4\./
367 Generic Linux 2.6 generic-linux 2.6 `uname -r` =~ /2\.6\./
368 Generic Linux 2.7 generic-linux 2.7 `uname -r` =~ /2\.7\./
371 Windows XP windows xp (-d "c:/windows" || -d "c:/winnt") && `ver` =~ /XP/
372 Windows 2000 windows 2000 (-d "c:/windows" || -d "c:/winnt") && `ver` =~ /2000/
373 Windows 2003 windows 2003 (-d "c:/windows" || -d "c:/winnt") && `ver` =~ /2003|\s5\.2/