Esempio n. 1
0
class LansWeeper(object):

    def __init__(self, baselink, username=None, password=None):
        self.browser = Browser()
        self.baselink = str(baselink).strip("/") + "/"
        self.browser.open_page(self.baselink + 'login.aspx')
        try:
            if username == None:
                self.browser.sendClick("//input[@id='defaultuser']")
            else:
                self.__login(username, password)
        except:
            pass

    def __login(self, username, password):
        self.browser.sendData(username, "//input[@id='NameTextBox']")
        self.browser.sendData(password, "//input[@id='PasswordInput']", True)

    def getAssestsLInks(self):
        page = BeautifulSoup(self.browser.getContent(self.baselink + "Assets.aspx"), "html5lib")
        assests = page.find(id="appendbody").find_all("tr")
        links = []
        for assest in assests:
            links.append(assest.a["href"])
        return links

    def getAssestsData(self, link):
        myassest = {
            'Asset Type': "",
            'Domain': "",
            'OS': "",
            'Build': "",
            'Version': "",
            'Manufacturer': "",
            'Model': '',
            'SKU': '',
            'Memory': '',
            'Processor': '',
            'Motherboard': '',
            'Graphics': '',
            'Audio': '',
            'Antivirus': '',
            'Network': '',
            'Harddisk': '',
        }
        page = BeautifulSoup(self.browser.getContent(self.baselink + link), "html5lib")
        try:
            table = page.find(id="assetcontent").find("table", class_="compmenu").find_next_sibling("table").find_all("td")
        except:
            raise Exception("Table not found")
        for element in table[0].find_all("tr"):
            td = element.find_all("td")
            key = re.sub(' +'," ",str(td[0].contents[0].string).rstrip(":")).strip(" ")
            if key in myassest.keys():
                if key in ("Asset Type", "Last user", "Domain", "Manufacturer", "Model"):
                    myassest[key] = str(td[1].a.string).replace("\n", " ").replace("\r", " ").strip(" ")
                elif key in ("Antivirus", "Network"):
                    item = td[1].find_all("span")
                    nbr_items = int(len(item) / 3)
                    itemlist = []
                    j = 0
                    for i in range(0, nbr_items):
                        software = '{} {} {}'.format(item[j].string.replace("\n", " ").replace("\r", " ").strip(" "),
                                                     item[j + 1].string.replace("\n", " ").replace("\r", " ").strip(
                                                         " "),
                                                     item[j + 2].string.replace("\n", " ").replace("\r", " ").strip(
                                                         " "))
                        j += 3
                        itemlist.append(software)
                    myassest[key] = re.sub(' +', ' ', ';'.join(itemlist))
                elif key == "Harddisk":
                    harddrives = td[1].find_all("table", recursive=False)
                    harddrives_labels = td[1].find_all("img", recursive=False)
                    HD_lists = []
                    j = 0
                    for drive in harddrives:
                        HD = str(harddrives_labels[j].next_sibling).replace("\n", " ").replace("\r", " ").strip(
                            " ") + str(
                            drive.find_all("tr")[0].find_all("td", recursive=False)[1].span.string).replace("\n",
                                                                                                            " ").replace(
                            '\xa0', '').replace("\r", " ").strip(" ")
                        j += 1
                        HD_lists.append(HD)
                    myassest[key] = re.sub(' +', ' ', ';'.join(HD_lists))
                else:
                    myassest[key] = re.sub(" +", " ", str(td[1].img.next_sibling).replace("\n", " ").replace("\r", " ").strip(" "))
        return myassest