#!/usr/bin/env python3 # # SYSTEMINFO by Derek Taylor (DistroTube) # A simple script that creates an openbox pipemenu that displays system information. # My root partition is on /dev/sda1 and my swap is /dev/sda5. Edit these is your partitioning is different. # # This program is free software: you can redistribute it and/or modify it under the terms of # the GNU General Public License version 3 as published by the Free Software Foundation. # This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see: http://www.gnu.org/licenses # # Copy this file somewhere on your path and make it executable. # Add the following line somewhere to your /.config/openbox/menu.xml # # Be sure to change the PATH/TO to the correct path to this file. # # Reconfigure openbox. # # REQUIRES net-tools (for ifconfig) to be installed on your computer. # SETTINGS import subprocess # SETTINGS - SYSTEM syst1 = "whoami" process = subprocess.Popen(syst1, stdout=subprocess.PIPE, shell=True) user = process.communicate()[0].decode("utf-8").rstrip() syst2 = "uname -n" process = subprocess.Popen(syst2, stdout=subprocess.PIPE, shell=True) host = process.communicate()[0].decode("utf-8").rstrip() syst3 = "uname -s" process = subprocess.Popen(syst3, stdout=subprocess.PIPE, shell=True) system = process.communicate()[0].decode("utf-8").rstrip() syst4 = "uname -r" process = subprocess.Popen(syst4, stdout=subprocess.PIPE, shell=True) release = process.communicate()[0].decode("utf-8").rstrip() syst5 = "uname -m" process = subprocess.Popen(syst5, stdout=subprocess.PIPE, shell=True) arch = process.communicate()[0].decode("utf-8").rstrip() syst6 = "uptime | sed 's/.* up //' | sed 's/[0-9]* us.*//' | sed 's/ day, / day /' | sed 's/ days, / days /' | sed 's/:/ hours /' | sed 's/ min//'| sed 's/,/ min/' | sed 's/ / /'" process = subprocess.Popen(syst6, stdout=subprocess.PIPE, shell=True) uptime = process.communicate()[0].decode("utf-8").rstrip() # SETTINGS - CPU cpu1 = "cat /proc/cpuinfo | grep 'model name' | sed 's/.*: //' | sed -n '1p'" process = subprocess.Popen(cpu1, stdout=subprocess.PIPE, shell=True) CPUmodel = process.communicate()[0].decode("utf-8").rstrip() cpu2 = "cat /proc/cpuinfo | grep -m 1 'cpu MHz' | sed 's/.*: //'" process = subprocess.Popen(cpu2, stdout=subprocess.PIPE, shell=True) CPUfreq = process.communicate()[0].decode("utf-8").rstrip() cpu3 = "cat /proc/cpuinfo | grep -m 1 'cache size' | sed 's/.*: //'" process = subprocess.Popen(cpu3, stdout=subprocess.PIPE, shell=True) CPUcache = process.communicate()[0].decode("utf-8").rstrip() # SETTINGS - MEM mem1 = "echo 'scale = 2; ('$(cat /proc/meminfo | grep MemTotal: | awk '{print $2}' | sed 's/k//')' /1024)' | bc" process = subprocess.Popen(mem1, stdout=subprocess.PIPE, shell=True) memTotal = process.communicate()[0].decode("utf-8").rstrip() mem2 = "echo 'scale = 2; ('$(cat /proc/meminfo | grep MemFree: | awk '{print $2}' | sed 's/k//')' /1024) + ('$(cat /proc/meminfo | grep grep -m 1 Cached: | awk '{print $2}' | sed 's/k//')' /1024)' | bc" process = subprocess.Popen(mem2, stdout=subprocess.PIPE, shell=True) memFree = process.communicate()[0].decode("utf-8").rstrip() mem3 = "echo 'scale = 2; ('$(cat /proc/meminfo | grep MemTotal: | awk '{print $2}' | sed 's/k//')' /1024) - (('$(cat /proc/meminfo | grep MemFree: | awk '{print $2}' | sed 's/k//')' /1024) + ('$(cat /proc/meminfo | grep -m 1 Cached: | awk '{print $2}' | sed 's/k//')' /1024))' | bc" process = subprocess.Popen(mem3, stdout=subprocess.PIPE, shell=True) memUsed = process.communicate()[0].decode("utf-8").rstrip() mem4 = "echo 'scale = 2; (('$(cat /proc/meminfo | grep MemTotal: | awk '{print $2}' | sed 's/k//')' /1024) - (('$(cat /proc/meminfo | grep MemFree: | awk '{print $2}' | sed 's/k//')' /1024) + ('$(cat /proc/meminfo | grep -m 1 Cached: | awk '{print $2}' | sed 's/k//')' /1024))) / ('$(cat /proc/meminfo | grep MemTotal: | awk '{print $2}' | sed 's/k//')' /1024) *100' | bc" process = subprocess.Popen(mem4, stdout=subprocess.PIPE, shell=True) memUsedPercent = process.communicate()[0].decode("utf-8").rstrip() # SETTINGS - DISKS disk1 = "df -HlT | grep /dev/sda1 | sed -r 's/ / /g' | sed -r 's/ / /g' | cut -d ' ' -f 1" process = subprocess.Popen(disk1, stdout=subprocess.PIPE, shell=True) rootPart = process.communicate()[0].decode("utf-8").rstrip() disk2 = "df -HlT | grep /dev/sda1 | sed -r 's/ / /g' | sed -r 's/ / /g' | cut -d ' ' -f 2" process = subprocess.Popen(disk2, stdout=subprocess.PIPE, shell=True) fileSys = process.communicate()[0].decode("utf-8").rstrip() disk3 = "df -HlT | grep /dev/sda1 | sed -r 's/ / /g' | sed -r 's/ / /g' | cut -d ' ' -f 3" process = subprocess.Popen(disk3, stdout=subprocess.PIPE, shell=True) diskTotal = process.communicate()[0].decode("utf-8").rstrip() disk4 = "df -HlT | grep /dev/sda1 | sed -r 's/ / /g' | sed -r 's/ / /g' | cut -d ' ' -f 4" process = subprocess.Popen(disk4, stdout=subprocess.PIPE, shell=True) diskUsed = process.communicate()[0].decode("utf-8").rstrip() disk5 = "df -HlT | grep /dev/sda1 | sed -r 's/ / /g' | sed -r 's/ / /g' | cut -d ' ' -f 5" process = subprocess.Popen(disk5, stdout=subprocess.PIPE, shell=True) diskFree = process.communicate()[0].decode("utf-8").rstrip() # SETTINGS - SWAP swap1 = "cat /proc/swaps | grep /dev/sda5 | sed -r 's/ / /g' | sed -r 's/ / /g' | cut -d ' ' -f 1" process = subprocess.Popen(swap1, stdout=subprocess.PIPE, shell=True) swapPart = process.communicate()[0].decode("utf-8").rstrip() swap2 = "echo 'scale = 2; ('$(cat /proc/meminfo | grep SwapTotal: | awk '{print $2}' | sed 's/k//')' /1024)' | bc" process = subprocess.Popen(swap2, stdout=subprocess.PIPE, shell=True) swapTotal = process.communicate()[0].decode("utf-8").rstrip() swap3 = "echo 'scale = 2; ('$(cat /proc/meminfo | grep SwapFree: | awk '{print $2}' | sed 's/k//')' /1024)' | bc" process = subprocess.Popen(swap3, stdout=subprocess.PIPE, shell=True) swapFree = process.communicate()[0].decode("utf-8").rstrip() swap4 = "echo 'scale = 2; ('$(cat /proc/meminfo | grep SwapTotal: | awk '{print $2}' | sed 's/k//')' /1024) - ('$(cat /proc/meminfo | grep SwapFree: | awk '{print $2}' | sed 's/k//')' /1024)' | bc" process = subprocess.Popen(swap4, stdout=subprocess.PIPE, shell=True) swapUsed = process.communicate()[0].decode("utf-8").rstrip() swap5 = "echo 'scale = 2; (('$(cat /proc/meminfo | grep SwapTotal: | awk '{print $2}' | sed 's/k//')' /1024) - ('$(cat /proc/meminfo | grep SwapFree: | awk '{print $2}' | sed 's/k//')' /1024)) / ('$(cat /proc/meminfo | grep SwapTotal: | awk '{print $2}' | sed 's/k//')' /1024) *100' | bc" process = subprocess.Popen(swap5, stdout=subprocess.PIPE, shell=True) swapUsedPercent = process.communicate()[0].decode("utf-8").rstrip() # SETTINGS - NET net1 = "/sbin/ifconfig 'enp3s0' | grep 'inet ' | sed 's/.*inet //' | sed 's/netmask.*//'" process = subprocess.Popen(net1, stdout=subprocess.PIPE, shell=True) netIP = process.communicate()[0].decode("utf-8").rstrip() net2 = "/sbin/ifconfig 'enp3s0' | grep 'RX packets' | sed 's/.*bytes [0-9]* (//' | sed 's/iB).*)*//' | sed 's/b).*)*//' | sed 's/).*)*//'" process = subprocess.Popen(net2, stdout=subprocess.PIPE, shell=True) netDown = process.communicate()[0].decode("utf-8").rstrip() net3 = "/sbin/ifconfig 'enp3s0' | grep 'TX packets' | sed 's/.*bytes [0-9]* (//' | sed 's/iB).*)*//' | sed 's/b).*)*//' | sed 's/).*)*//'" process = subprocess.Popen(net3, stdout=subprocess.PIPE, shell=True) netUp = process.communicate()[0].decode("utf-8").rstrip() # OPENBOX PIPEMENU print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('') print ('')