Skip to main content

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

2025-05-26 07_46_07-PI-DT-01 (WayVNC) - RealVNC Viewer.png

Log Output with tee and wrapped in {}
2025-05-26 07_45_49-PI-DT-01 (WayVNC) - RealVNC Viewer.png