What are Self-Reports?

Printers have it figured out. Push a button or two → get a neat printed summary of ink, alignment, and IP address.
I wanted the same for my machines. Jumping between machines on SSH can get disorienting as you try to remember how each is configured and what is going on with it. I thought about how nice it would be to have printer test-page style reports for my servers.

So I wrote a small set of self-report scripts—Bash and Python tools I keep in /usr/local/bin—that generate clean, colorful status reports. They don’t try to be full monitoring systems; they’re quick checkups I can run over SSH or right after login. It gives me a familiar, nice report from that machine’s point of view. Simple scripts—powerful concept.

Features

The family so far:

  • disk_report.sh → Disk usage & mount points
  • mem_report.sh → Memory & swap snapshot
  • lan_report.sh → Interfaces, routes, DNS, public IP, open ports
  • pi-health.sh → Hardware report specific to Raspberry Pi and PironMan5 hardware
  • py_report.py → Python environment snapshot (sys.path, pip packages, -m modules, etc.)

The scripts are designed with consistency in mind. Some highlights:

  • Consistent formatting across reports (emoji + color)
  • Runs on Linux, macOS, and WSL
  • Zero dependencies (optional: prettier output with eza)
  • Drop-in friendly → just copy into /usr/local/bin
  • Focused: each report covers one domain (disk, memory, LAN, etc.)
  • Safe: read-only reports, no risk of changing config

QuickStart

You can grab a copy of my report scripts to use or modify from GitHub:

🔗 View Self-Reports on GitHub


git clone https://github.com/forfaxx/self-reports.git
cd self-reports

sudo cp *.sh *.py /usr/local/bin/
sudo chmod +x /usr/local/bin/*

Optional: strip .sh when installing if you prefer shorter command names:

sudo cp disk_report.sh /usr/local/bin/disk_report
sudo cp mem_report.sh  /usr/local/bin/mem_report
sudo cp lan_report.sh  /usr/local/bin/lan_report
sudo cp pi-health.sh   /usr/local/bin/pi-health
sudo cp py_report.py   /usr/local/bin/py_report

Tip: You should now be able to run any of the reports. The real power in my experience has been in having these on each of my machines with public key based ssh authentication to make it easy to run them from anywhere:

ssh user@host mem_report

🖥️ Sample Output

See the README.md on GitHub for detailed output examples for each script.

Basically what you get from each is a consistent, on-demand report from that machine’s perspective. Read-only and with minimal dependencies so you can run it anywhere, anytime you need to refresh your memory.

Here is a taste of the output for mem_report.sh (I remove the .sh extensions in my examples. it’s up to you).


🧠 Memory Report for: server.example.com
🕒 Date: Mon 18 Aug 20:44:57 CDT 2025
🧬 OS: Linux
----------------------------------------

📊 Memory Summary:
               total        used        free      shared  buff/cache   available
Mem:           7.9Gi       2.9Gi       425Mi        21Mi       5.1Gi       5.0Gi
Swap:           17Gi       1.4Gi        16Gi

📈 Load Averages:
 20:44:57 up 32 days, 23:49,  2 users,  load average: 1.30, 1.36, 1.51

🔁 Swap Usage:
NAME       TYPE      SIZE USED PRIO
/dev/zram0 partition   2G 1.4G  100
/swapfile  file       16G   0B   10
  SwapCached:         6656 kB
  SwapTotal:      18874336 kB
  SwapFree:       17425664 kB
  Zswap:                 0 kB
  Zswapped:              0 kB

🌀 ZRAM Status:
zram0:
  disksize            : 2147483648
  compr_data_size     : (missing)
  mem_used_total      : (missing)

🐘 Top Memory Consumers:
    PID    PPID CMD                          %MEM %CPU
   1001     999 /usr/bin/sync-daemon          4.0 64.8
   2048    2000 /usr/local/bin/webapp         2.3  0.2
   3001    2988 homebridge: bridge-addon      2.0  0.0
    325       1 /lib/systemd/systemd-journa   2.0  0.0
   1111     888 /usr/bin/db-service           1.7  0.3
   4000    3990 node app/server.js            1.6  0.4
   4020    4010 /usr/bin/dns-resolver         1.5  0.5
   4500    4400 background-service            1.1  0.0
   5000       1 /usr/bin/containerd-shim      0.7  0.2

Conclusion

That’s the whole idea: quick, colorful self-reports you can run on any machine.
Not a monitoring system, not a dashboard—just a friendly check-in, like a printer test page for your servers.

I’ve already found these scripts handy when I ssh into a box I haven’t touched in a while, or when I want to sanity-check a Pi on the shelf. They’re small, portable, and don’t step on anything else.

💡 Got an idea for another kind of report? Found a bug? Or maybe you’ve written your own flavor?
I’d love to see it:

📬 feedback@adminjitsu.com
🔗 Self-Reports GitHub repo