예제 #1
0
파일: debian.py 프로젝트: thomassa/xenrt
 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")
예제 #2
0
파일: rhel.py 프로젝트: thomassa/xenrt
 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")
예제 #3
0
파일: debian.py 프로젝트: thomassa/xenrt
 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")
예제 #4
0
파일: rhel.py 프로젝트: thomassa/xenrt
 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")
예제 #5
0
파일: linux.py 프로젝트: thomassa/xenrt
 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))
예제 #6
0
파일: rhel.py 프로젝트: thomassa/xenrt
 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")
예제 #7
0
파일: sles.py 프로젝트: thomassa/xenrt
    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")
예제 #8
0
파일: rhel.py 프로젝트: thomassa/xenrt
 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")
예제 #9
0
파일: sles.py 프로젝트: thomassa/xenrt
 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")
예제 #10
0
파일: xs.py 프로젝트: thomassa/xenrt
 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")
예제 #11
0
 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")
예제 #12
0
파일: debian.py 프로젝트: thomassa/xenrt
 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")