def detect(cls, parent, detectionState): obj = cls("testdeb", parent, detectionState.password) isUbuntu = obj.execSSH("grep Ubuntu /etc/lsb-release", retval="code") == 0 if isUbuntu: raise OSNotDetected("OS is Ubuntu") else: release = obj.execSSH("cat /etc/debian_version").strip() release = release.split(".")[0] if re.match("^\d+$", release): return cls("debian%s0_%s" % (release, obj.getArch()), parent, obj.password) else: raise OSNotDetected("Couldn't determine Debian version")
def detect(cls, parent, detectionState): obj = cls("testscilinux", parent, detectionState.password) if obj.execSSH("test -e /etc/sl-release", retval="code") != 0: raise OSNotDetected("OS is not Scientific Linux") distro = obj.execSSH("cat /etc/sl-release | " "sed 's/Scientific Linux release /scilinux/' | " "awk '{print $1}'").strip() dd = distro.split(".") distro = dd[0] if dd[1] != "0": distro += dd[1] if re.match("^scilinux(\d+)$", distro): return cls("%s_%s" % (distro, obj.getArch()), parent, obj.password) else: raise OSNotDetected("Could not determine Scientific Linux version")
def detect(cls, parent, detectionState): obj = cls("testdeb", parent, detectionState.password) isUbuntu = obj.execSSH("grep Ubuntu /etc/lsb-release", retval="code") == 0 if not isUbuntu: raise OSNotDetected("OS is not Ubuntu") else: release = obj.execSSH( "cat /etc/lsb-release | grep DISTRIB_RELEASE | cut -d = -f 2 | tr -d ." ) if re.match("^\d+$", release): return cls("ubuntu%s0_%s" % (release, obj.getArch()), parent, obj.password) else: raise OSNotDetected("Could not determine Ubuntu version")
def detect(cls, parent, detectionState): obj = cls("testcentos", parent, detectionState.password) if obj.execSSH("test -e /etc/centos-release", retval="code") != 0: raise OSNotDetected("OS is not CentOS") distro = obj.execSSH("cat /etc/centos-release | " "sed 's/CentOS release /centos/' | " "sed 's/CentOS Linux release /centos/' | " "awk '{print $1}'").strip() if not distro.startswith("centos"): raise OSNotDetected("OS it not CentOS") dd = distro.split(".") distro = dd[0] if dd[1] != "0": distro += dd[1] if re.match("^centos(\d+)$", distro): return cls("%s_%s" % (distro, obj.getArch()), parent, obj.password) else: raise OSNotDetected("Could not determine CentOS version")
def detect(cls, parent, detectionState): obj = cls("testlin", parent, detectionState.password) try: sock = socket.socket() sock.settimeout(10) sock.connect((obj.getIP(), obj.getPort("SSH"))) sock.close() obj.execSSH("true") except Exception, e: raise OSNotDetected("OS appears not to have SSH: %s" % str(e))
def detect(cls, parent, detectionState): obj = cls("testrhel", parent, detectionState.password) if obj.execSSH("test -e /etc/centos-release", retval="code") == 0: raise OSNotDetected("OS is CentOS") if obj.execSSH("test -e /etc/oracle-release", retval="code") == 0: raise OSNotDetected("OS is Oracle Linux") if obj.execSSH("test -e /etc/sl-release", retval="code") == 0: raise OSNotDetected("OS is Scientific Linux") distro = obj.execSSH( "cat /etc/redhat-release | " "sed 's/Red Hat Enterprise Linux Server release /rhel/' | " "sed 's/Red Hat Enterprise Linux Client release /rheld/' | " "sed 's/Red Hat Enterprise Linux Workstation release /rhelw/' | " "awk '{print $1}'").strip() dd = distro.split(".") distro = dd[0] if dd[1] != "0": distro += dd[1] if re.match("^rhel[dw]?(\d+)$", distro): return cls("%s_%s" % (distro, obj.getArch()), parent, obj.password) else: raise OSNotDetected("Could not determine RHEL version")
def detect(cls, parent, detectionState): obj=cls("testsuse", parent, detectionState.password) release = obj.execSSH("cat /etc/SuSE-release") releaseMatch = re.search("VERSION = (\d+)", release) patchMatch = re.search("PATCHLEVEL = (\d+)", release) if releaseMatch: ret = "sles" ret += releaseMatch.group(1) if patchMatch and patchMatch.group(1) != "0": ret += patchMatch.group(1) return cls("%s_%s" % (ret, obj.getArch()), parent, obj.password) raise OSNotDetected("Could not determine SLES version")
def detect(cls, parent, detectionState): obj = cls("testrhel", parent, detectionState.password) if obj.execSSH("test -e /etc/xensource-inventory", retval="code") == 0: raise OSNotDetected("OS is XenServer") if not obj.execSSH("test -e /etc/redhat-release", retval="code") == 0: raise OSNotDetected("OS is not RedHat based")
def detect(cls, parent, detectionState): obj=cls("testsuse", parent, detectionState.password) if not obj.execSSH("test -e /etc/SuSE-release", retval="code") == 0: raise OSNotDetected("OS is not SuSE based")
def detect(cls, parent, detectionState): obj = cls("XSDom0", parent, detectionState.password) if obj.execSSH("test -e /etc/xensource-inventory", retval="code") == 0: return cls("XSDom0", parent, obj.password) raise OSNotDetected("OS is not XenServer")
def detect(cls, parent, detectionState): obj=cls("testcoreos", parent, detectionState.password) if obj.execSSH("grep NAME=CoreOS /etc/os-release", retval="code") == 0: return cls("coreos_x86-64", parent, obj.password) else: raise OSNotDetected("OS it not CoreOS")
def detect(cls, parent, detectionState): obj = cls("testdeb", parent, detectionState.password) if not obj.execSSH("test -e /etc/debian_version", retval="code") == 0: raise OSNotDetected("OS is not debian")