| 103 | |
| 104 | class Distribution: |
| 105 | def __init__(self): |
| 106 | self.distro = "Unknown" |
| 107 | self.release = "Unknown" |
| 108 | |
| 109 | if os.path.exists("/etc/fedora-release"): |
| 110 | self.distro = "Fedora" |
| 111 | elif os.path.exists("/etc/redhat-release"): |
| 112 | version = open("/etc/redhat-release").readline() |
| 113 | if (version.find("Red Hat Enterprise Linux Server release 6") != -1 or version.find("Scientific Linux release 6") != -1 or |
| 114 | version.find("CentOS Linux release 6") != -1 or version.find("CentOS release 6.") != -1): |
| 115 | self.distro = "RHEL6" |
| 116 | elif (version.find("Red Hat Enterprise Linux Server release 7") != -1 or version.find("Scientific Linux release 7") != -1 or |
| 117 | version.find("CentOS Linux release 7") != -1 or version.find("CentOS release 7.") != -1): |
| 118 | self.distro = "RHEL7" |
| 119 | elif (version.find("Red Hat Enterprise Linux Server release 8") != -1 or version.find("Scientific Linux release 8") != -1 or |
| 120 | version.find("CentOS Linux release 8") != -1 or version.find("CentOS release 8.") != -1 or |
| 121 | version.find("Linux release 8") != -1): |
| 122 | self.distro = "RHEL8" |
| 123 | elif (version.find("Red Hat Enterprise Linux Server release 9") != -1 or version.find("Scientific Linux release 9") != -1 or |
| 124 | version.find("Red Hat Enterprise Linux release 9") != -1 or version.find("Linux release 9.") != -1 or |
| 125 | version.find("Linux release 9") != -1): |
| 126 | self.distro = "RHEL9" |
| 127 | elif (version.find("Red Hat Enterprise Linux Server release 10") != -1 or version.find("Scientific Linux release 10") != -1 or |
| 128 | version.find("Red Hat Enterprise Linux release 10") != -1 or version.find("Linux release 10.") != -1 or |
| 129 | version.find("Linux release 10") != -1): |
| 130 | self.distro = "RHEL10" |
| 131 | elif version.find("CentOS") != -1: |
| 132 | self.distro = "CentOS" |
| 133 | else: |
| 134 | self.distro = "RHEL5" |
| 135 | elif os.path.exists("/etc/legal") and "Ubuntu" in open("/etc/legal").read(-1): |
| 136 | self.distro = "Ubuntu" |
| 137 | kernel = bash("uname -r").getStdout() |
| 138 | if kernel.find("2.6.32") != -1: |
| 139 | self.release = "10.04" |
| 140 | self.arch = bash("uname -m").getStdout() |
| 141 | elif os.path.exists("/usr/bin/lsb_release"): |
| 142 | o = bash("/usr/bin/lsb_release -i") |
| 143 | distributor = o.getStdout().split(":\t")[1] |
| 144 | if "Debian" in distributor: |
| 145 | # This obviously needs a rewrite at some point |
| 146 | self.distro = "Ubuntu" |
| 147 | else: |
| 148 | raise UnknownSystemException(distributor) |
| 149 | elif os.path.exists("/etc/os-release"): |
| 150 | version = open("/etc/os-release").readline() |
| 151 | distributor = version.split("=")[1].replace('"', '').strip() |
| 152 | if "SUSE" in distributor or "SLES" in distributor: |
| 153 | self.distro = "SUSE" |
| 154 | else: |
| 155 | raise UnknownSystemException(distributor) |
| 156 | else: |
| 157 | raise UnknownSystemException |
| 158 | |
| 159 | def getVersion(self): |
| 160 | return self.distro |