Pi 5 System Summary Script with AWK

Date: May 25th, 2025 Category: Linux Scripting / System Monitoring 

 I wrote this script after studying awk . This command is really powerful in scripting. I have a good understanding of using the command to extract data fields from CSV files, and live system data. Here is my project I made using awk . 

 Script Overview 

 

 

 Gathers: 

 

 

 Timestamp 

 

 

 IP Address 

 

 

 Hostname 

 

 

 Uptime (human-readable) 

 

 

 Disk usage, total, free 

 

 

 Memory usage, total, free 

 

 

 

 

 Outputs to both screen and log file 

 

 

 Uses awk , df , free , uptime , and tee 

 

 

 

 Script: pi5-system-summary.sh 

 #!/bin/bash

LOGFILE=~/pi5-summary-$(date +%Y-%m-%d).log

TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

HOSTNAME=$(hostname)

IP=$(hostname -I | awk '{ print $1 }')

UPTIME=$(uptime -p)

DISK_TOTAL=$(df -h / | awk 'NR > 1 { print $2 }')

DISK_USAGE=$(df -h / | awk 'NR > 1 { print $5 }' | tr -d '%')

DISK_FREE=$(df -h / | awk 'NR > 1 { print $4 }')

MEM_TOTAL=$(free -h | awk 'NR == 2 { print $2 }')

MEM_USEAGE=$(free -h | awk 'NR == 2 { print $3 }')

MEM_FREE=$(free -h | awk 'NR == 2 { print $4 }')

{

echo "===== Pi 5 System Summary ====="

echo "$TIMESTAMP"

echo "IP ADDRESS: $IP"

echo "HOSTNAME: $HOSTNAME"

echo "UPTIME: $UPTIME"

echo "DISK TOTAL: $DISK_TOTAL"

echo "DISK USAGE: $DISK_USAGE%"

echo "DISK FREE: $DISK_FREE"

echo "MEM TOTAL: $MEM_TOTAL"

echo "MEM USAGE: $MEM_USEAGE"

echo "MEM FREE: $MEM_FREE"

} | tee -a "$LOGFILE"

 

 

 Sample Output 

 

 Log Output with tee and wrapped in {}