def poll(self): """Returns . self.poll() is threadsafe""" self.__lock.acquire() try: buf = gtop.netload(self.__dev) bytes_in, bytes_out = buf.bytes_in, buf.bytes_out now = time.time() interval = now - self.__time in_diff = bytes_in - self.__in out_diff = bytes_out - self.__out speed_in = int(in_diff / interval) speed_out = int(out_diff / interval) self.__time = now self.__in, self.__out = bytes_in, bytes_out return (speed_in, speed_out) finally: self.__lock.release()
def _get_net_stats(self): ifs = { } nets = gtop.netlist() for net in nets: netload = gtop.netload(net) ifs[net] = [ netload.bytes_in, netload.bytes_out ] nets.insert(0, "Net") return ifs, nets
def _get_net_stats(self): ifs = {} nets = gtop.netlist() for net in nets: netload = gtop.netload(net) ifs[net] = [netload.bytes_in, netload.bytes_out] nets.insert(0, "Net") return ifs, nets
def __init__(self, dev): Device.__init__(self) self.__dev = dev buf = gtop.netload(dev) self.__in, self.__out = buf.bytes_in, buf.bytes_out self.__time = time.time() self.__lock = threading.Lock()
def net_state(self, dev): """ @param dev: interface @type dev: str @return : whether a network device is up or not (i.e. down) @rtype : bool """ return gtop.netload(dev).if_flags & gtop.NETLOAD_IF_FLAGS_UP
def repl(): global s shell = Monitor('rohit') cls() cls() curEpocs1 = time.time() curEpocs2 = time.time() lastBytes = 0 while True: cpu, mem = map( float, shell.run( "ps axo pcpu,pmem | awk '{sum += $0; pmem += $2} END {print sum/8, pmem}'" ).split(' ')) #cpu = 0 #for core in gtop.cpu().cpus: # cpu += 100.0 * (core.user+core.sys) / core.total #print cpu #cpu /= 8 if cpu > 100.0: cpu = 100 # Happens on Intel multicores mem = 1.0 * gtop.mem().user / gtop.mem().total * ( gtop.mem().total / 1024.0 / 1024.0 / 1024.0) #3.98 temp = float( shell.run( """sensors | grep temp1 | head -1 | awk '{print $2}' | sed 's/+//' | sed 's/.C//'""" )) netload = gtop.netload('eth0') curEpocs2 = time.time() net = (netload.bytes_total - lastBytes) / (curEpocs2 - curEpocs1) / 1024 #kbps lastBytes = netload.bytes_total curEpocs1 = curEpocs2 if net > 999: net /= 1024 netstr = "%.1fM" % net else: netstr = "%.1fK" % net goto(0, 0) pl("%.1f%% " % cpu) goto(0, 6) pl("%0.1fG" % mem) goto(0, 11) pl("%0.1fC" % temp) goto(1, 0) pl(time.strftime("%H:%M:%S")) goto(1, 9) pl(netstr.zfill(7)) #sound_data = getFFT() #for i in range(samples): # don't have sound data for now # writenum(s, sound_data[i] % 8) time.sleep(0.4)
def repl(): global s shell = Monitor('rohit') cls() cls() curEpocs1 = time.time() curEpocs2 = time.time() lastBytes = 0 while True: cpu, mem = map(float, shell.run("ps axo pcpu,pmem | awk '{sum += $0; pmem += $2} END {print sum/8, pmem}'").split(' ')) #cpu = 0 #for core in gtop.cpu().cpus: # cpu += 100.0 * (core.user+core.sys) / core.total #print cpu #cpu /= 8 if cpu > 100.0: cpu = 100 # Happens on Intel multicores mem = 1.0 * gtop.mem().user / gtop.mem().total * (gtop.mem().total/1024.0/1024.0/1024.0)#3.98 temp = float(shell.run("""sensors | grep 'Core.*+' | awk '{print $3}' | sed 's/+//' | sed 's/.C//' | awk '{sum+=$0} END {print sum/4}'""")) netload = gtop.netload('eth0') curEpocs2 = time.time() net = (netload.bytes_total - lastBytes) / (curEpocs2 - curEpocs1) / 1024 #kbps lastBytes = netload.bytes_total curEpocs1 = curEpocs2 if net > 999: net /= 1024 netstr = "%.2fM" % net else: netstr = "%.2fK" % net goto(0,0) pl("%.1f%% " % cpu) goto(0, 6) pl("%0.1fG" % mem) goto(0,11) pl("%0.1fC" % temp) goto(1,0) pl(time.strftime("%H:%M:%S")) goto(1,9) pl(netstr.zfill(7)) #sound_data = getFFT() #for i in range(samples): # don't have sound data for now # writenum(s, sound_data[i] % 8) time.sleep(0.4)
def get_theme_properties(self): properties = { } def convert_bytes(bytes): bytes = float(bytes) if bytes >= 1099511627776: terabytes = bytes / 1099511627776 size = '%.2fT' % terabytes elif bytes >= 1073741824: gigabytes = bytes / 1073741824 size = '%.2fG' % gigabytes elif bytes >= 1048576: megabytes = bytes / 1048576 size = '%.2fM' % megabytes elif bytes >= 1024: kilobytes = bytes / 1024 size = '%.2fK' % kilobytes else: size = '%.2fb' % bytes return size # Split vnstat data into array def get_traffic_data(dataType, dataValue, vn): line='' for item in vn.split("\n"): if "%s;%d;" % (dataType, dataValue) in item: line = item.strip().split(';') break return line # convert MiB and KiB into KB def cb(mib, kib): return (int(mib) * 1000000) + (int(kib) * 1000) ''' Get the details to display and place them as properties which are passed to the theme ''' if self.use_vnstat is False: bootup = datetime.datetime.fromtimestamp(int(gtop.uptime().boot_time)).strftime('%d.%m.%y %H:%M') sd = gtop.netload(self.networkdevice) properties["sdn"] = "DL: " +convert_bytes(sd.bytes_in) properties["sup"] = "UL: " +convert_bytes(sd.bytes_out) properties["des1"] = "Traffic since: " +bootup properties["title"] = self.networkdevice + " Traffic" else: vnstat, vn = g15os.get_command_output('vnstat -i ' + self.networkdevice + ' --dumpdb') if vnstat != 0: properties["message"] = "vnstat is not installed!" else: chErr = str(vn.find("Error")); if chErr != "-1": properties["message"] = "No stats for device " + self.networkdevice else: properties["title"] = self.networkdevice +" Traffic (U/D)" def get_data(kind, period): # get vnstat data as array, array content: 2 = unixtime, 4 = up MiB, 6 = up KiB, 3 = dn MiB, 5 = dn KiB line = get_traffic_data(kind, period, vn) if line[7] == '1': up = convert_bytes(cb(line[4], line[6])) dn = convert_bytes(cb(line[3], line[5])) des = int(line[2]) return [up, dn, des] else: return None if self.loadpage == 'vnstat_daily': k = "d" fmt = '%A' elif self.loadpage == 'vnstat_monthly': k = "m" fmt = '%B' for p in range(0,3): data = get_data(k,p) if data is not None: properties["d"] = "/" properties["dup" + str(p + 1)] = data[0] properties["ddn" + str(p + 1)] = data[1] properties["des" + str(p + 1)] = datetime.datetime.fromtimestamp(data[2]).strftime(fmt) return properties