def _display_news(): alertThread.join() news = web_client.read_news() if news is None: return self.webNews = news['message'] canv.itemconfig('webNews', text=utils.break_lines(self.webNews, MAX_INFO_LINE_CHARS))
def _display_alerts(): self.webAlerts = web_client.read_alerts() if not self.webAlerts: return canv.create_text(self.infoBoxXCenter, BOX_Y_MIN + self.newsBoxYMax * 0.5, text=i18n.webNews[i18n.lang()][2], tags=('webAlertsHeader'), fill='red', font=("Times", 25, "bold")) for alert in self.webAlerts: alert = alert['message'] canv.create_text(self.infoBoxXCenter, BOX_Y_MIN + self.newsBoxYMax, text=utils.break_lines( alert, MAX_INFO_LINE_CHARS), tags=('webAlerts'))
def get_raid(): result = str(check_output("cat /proc/mdstat", shell=True), "UTF-8") result = break_lines(result) table = {} prev = None for line in result[1:]: if prev is not None: parts = line.split(" ") total, count = parts[-2].strip("[]").split("/") ready = parts[-1].strip("[]") table[dev] = table[dev][:-3] + (int(total), int(count), ready) prev = None if "md" in line and ":" in line: parts = line.split(" ") dev = parts[0] status = "" mode = None devices = [] # Filter each part, the raid part indicates the before (status) and next (devices) for part in parts[2:]: if mode is None: if "raid" in part: mode = part else: if len(status) > 0: status += " " status += part else: device = part.split("[")[0] devices.append(device) table[dev] = (status, mode, devices, None, None, None) # RAID0 doesn't have count/ready if mode is not None and mode != "raid0": prev = dev continue return table
def get_arp(): result = str(check_output("cat /proc/net/arp", shell=True), "UTF-8") result = break_lines(result) table = {} for line in result[1:]: ip = None mac = None dev = None for index, column in enumerate(filter(None, line.split(" "))): if index == 0: ip = column elif index == 3: mac = column elif index == 5: dev = column if ip and mac and dev: table[ip] = (mac, dev) return table
def get_smart(device): process = run("smartctl -H -i /dev/%s" % device, stdout=PIPE, shell=True) result = str(process.stdout, "UTF-8") code = process.returncode result = break_lines(result) line_status = "SMART support is:" line_firmware = "A firmware update for this drive may be available" line_test = "SMART overall-health self-assessment test result:" status = None firmware = False test = None for line in result: parts = line.split(" ") if line_status in line: status = parts[-1] if line_firmware in line: firmware = True if line_test in line: test = parts[-1] return status, firmware, test, code
def get_gateway(): result = str(check_output("route -n", shell=True), "UTF-8") result = break_lines(result) for line in result[2:]: destination = None gateway = None flags = None dev = None for index, column in enumerate(filter(None, line.split(" "))): if index == 0: destination = column elif index == 1: gateway = column elif index == 3: flags = column elif index == 7: dev = column if destination and gateway and dev and "G" in flags: return destination, gateway, flags, dev return None