lactozora/sys.bash
2024-11-15 18:08:39 -06:00

55 lines
No EOL
1.4 KiB
Bash
Executable file

#!/bin/bash
#set -x
# a bash file that can provide various bits of info about the system
function cpuinfo() {
# now lets extract the number of core and the architecture
num_cores=$(lscpu | grep -E "^CPU\(s\):" | awk '{print $2}')
architecture=$(lscpu | grep -E "^Architecture:" | awk '{print $2}')
# get cpu usage
cpu_usage=$(grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}')
echo "$num_cores cores, $architecture architecture, CPU usage: $cpu_usage"
}
function meminfo() {
echo "Memory:"
# We will get to this later
#total=$(free -h| grep ) #| grep -E "Mem|Swap"
total=$(free -h | awk '/^Mem/ {print $2}')
used=$(free -h | awk '/^Mem/ {print $3}')
free=$(free -h | awk '/^Mem/ {print $4}')
echo "Total: $total, Used: $used, Free: $free"
}
function diskinfo() {
echo "Disk:"
# We will get to this later
disks=$(lsblk -d -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL | awk 'NR>1 {print $1,$2,$3,$4,$5}')
for disk in $disks; do
echo "$disk"
done
}
function networkinfo() {
echo "Network:"
# get network interfaces and usage
net=$(ifstat -j | jq -r '.[] | "\(.interface) TX:\(.tx.kbps) RX:\(.rx.kbps)"')
for interface in $net; do
echo "$interface"
done
}
# This seems to be a good layout for sys.bash for now
cpuinfo
meminfo
diskinfo
networkinfo