def main(): if http_request() == 1: send_to_syslog("The server responds to HTTP requests on localhost in more than 100ms") send_email("The server responds to HTTP requests on localhost in more than 100ms") if tty_session() == 1: send_to_syslog("There are user(s) with tty session(s) logged into the server") send_email("There are user(s) with tty session(s) logged into the server") if disk_usage() == 1: send_to_syslog("Disk usage on the root volume is more than 90%") send_email("Disk usage on the root volume is more than 90%")
def size(self): if self._size: return self._size paths = [self.documentRoot,] + [a[1] for a in self.aliases] paths = list(set([os.path.abspath(path.strip('"')) for path in paths])) paths.sort() for x_path in paths[:]: for y_path in paths[:]: if x_path is y_path: continue if os.path.commonprefix([x_path, y_path]) == x_path: paths.remove(y_path) size = 0 for path in paths: size += disk_usage(path) self._size = size
def disk_usage(self): total, used, free = disk_usage.disk_usage(self.store_dir) return total, used, free
#!/usr/bin/env Python import time import cpu_occupy import memory_occupy import cpu_load import network_rate import disk_usage if __name__ == '__main__': while True: localtime = time.asctime(time.localtime(time.time())) print(localtime + "-----------------------------") print "[cpu_occupy] " + ": %.2f" % cpu_occupy.get_cpu_occupy() + r' %' print "[memory_occupy]" + ": %.2f" % memory_occupy.get_mem_occupy( ) + r' %' load = cpu_load.get_cpu_load() print "[cpu_load] 1min 5min 15mim: %s %s %s" % (load.one, load.five, load.fifteen) print "[network_speed]" for item in network_rate.get_net_rate(): print "%s recv: %.2f KB/s ; trans: %.2f KB/s" % ( item.interface, item.recv_rate / 1000, item.transmit_rate / 1000) print "[disk_usage]" for dev in disk_usage.disk_partitions(): usage = disk_usage.disk_usage(dev.mountpoint) print "%s" % dev.device + ": %.1f " % usage.percent + r' %' time.sleep(30)
def run_pano(self,session): primary_folder = session['pano_config']['pano_main_folder'] fallback_folder = session['pano_config']['pano_fallback_folder'] main_folder = None if os.path.exists(primary_folder): main_folder = primary_folder self.update_state(state='PROGRESS', meta={'status': 'Primary folder found.'}) elif os.path.exists(fallback_folder): main_folder = fallback_folder self.update_state(state='WARNING', meta={'status': 'Primary folder not found, using fallback'}) else: self.update_state(state='FAILURE', meta={'status': 'No folders found. Aborting...'}) raise Ignore self.update_state(state='PROGRESS', meta={'status': 'Saving panorma images to {} '.format(main_folder)}) time.sleep(5) # test if there's enough disk space current_usage = disk_usage.disk_usage(main_folder) if current_usage.free < 1e6*int(512): self.update_state(state='FAILURE', meta={'status':"There's only {} bytes left. Stopping".format(current_usage.free)}) raise Ignore timestream_format = "%Y/%Y_%m/%Y_%m_%d/%Y_%m_%d_%H/{}_%Y_%m_%d_%H_%M" dt = datetime.now() temp = dt.stftime(timestream_format).format(session["pano_config"]['camera_name']) main_folder = os.path.join(main_folder, temp) if not os.path.exists(main_folder): os.makedirs(main_folder) self.update_state(state='PROGRESS', meta={'status': 'Created folder: {} '.format(main_folder)}) self.update_state(state='PROGRESS', meta={'status': 'Started...'}) pano_image_num = 0 delay_sec = 3 # make sure zoom is correct before taking panorama if session.get("zoom_val",None): self.update_state(state='PROGRESS', meta={'status': 'Setting zoom to {}'.format(session['zoom_val'])}) set_zoom(self, session, session["zoom_val"]) time.sleep(1) def cols_right(): for i in range(session['pano_cols']): for j in range(session['pano_rows']): if j == 0: move_and_snap(self, session, main_folder, dt, i, j, delay_sec) else: move_and_snap(self, session, main_folder, dt, i, j) def cols_left(): for i in range(session['pano_cols']-1, -1, -1): for j in range(session['pano_rows']): if j == 0: move_and_snap(self, session, main_folder, dt, i, j, delay_sec) else: move_and_snap(self, session, main_folder, dt, i, j) def rows_down(): for j in range(session['pano_rows']): for i in range(session['pano_cols']): if i == 0: move_and_snap(self, session, main_folder, dt, i, j, delay_sec) else: move_and_snap(self, session, main_folder, dt, i, j) def rows_up(): for j in range(session['pano_rows']-1, -1, -1): for i in session['pano_cols']: if i == 0: move_and_snap(self, session, main_folder, dt, i, j, delay_sec) else: move_and_snap(self, session, main_folder, dt, i, j) funcs = { 0: cols_right, 1: cols_left, 2: rows_down, 3: rows_up } # run a function from the signatures. funcs[session.get("scan_order",0)]()