import subprocess import re import csv import os import time # Define your shell command command = ["iostat", "-n", "0"] headerRow = [ "timestamp", "name", "tty_in", "tty_out", "cpu_user", "cpu_user_niced", "cpu_system", "cpu_interrupt", "cpu_idle", ] filename = "cpuStat.csv" def runIostat(): # Run the command and capture output result = subprocess.run(command, capture_output=True, text=True) timestamp = time.time() local_time = time.localtime(timestamp) # Format the time components for a more readable output timestamp = time.strftime("%Y-%m-%d %H:%M:%S", local_time) # Check the return code (0 for success) if result.returncode == 0: # Check if the file exists if not os.path.exists(filename): # Create the file in write mode ('w') if it doesn't exist with open(filename, "w", newline="") as csvfile: csv_writer = csv.writer(csvfile) # Write the header row (optional) csv_writer.writerow(headerRow) # Access the captured output as a string output = result.stdout byline = re.split("\n", output) data = byline[2] lineData = data.split() if lineData: with open(filename, "a", newline="") as csvfile: csv_writer = csv.writer(csvfile) lineData.insert(0, "cpu") lineData.insert(0, timestamp) csv_writer.writerow(lineData) else: print(f"Error running command: {result.stderr}") def main(): runIostat() if __name__ == "__main__": main()