Prerequisites
Before setting up server reports, make sure you have:
- SSH access to your VPS
- Root or sudo privileges
- Mailutils installed
Step 1: Create the Report Script
Connect to your VPS:
ssh hxroot@YOUR_SERVER_IP -p 22
sudo nano /usr/local/bin/weekly-report.sh
Add content:
#!/bin/bash
REPORT_FILE="/tmp/server_report_$(date +%Y%m%d).txt"
echo "=============================================" > $REPORT_FILE
echo "Server Report: $(hostname)" >> $REPORT_FILE
echo "Date: $(date)" >> $REPORT_FILE
echo "=============================================" >> $REPORT_FILE
echo "" >> $REPORT_FILE
echo "--- Uptime ---" >> $REPORT_FILE
uptime >> $REPORT_FILE
echo "" >> $REPORT_FILE
echo "--- CPU Usage ---" >> $REPORT_FILE
top -bn1 | grep "Cpu(s)" >> $REPORT_FILE
echo "" >> $REPORT_FILE
echo "--- Memory Usage ---" >> $REPORT_FILE
free -h >> $REPORT_FILE
echo "" >> $REPORT_FILE
echo "--- Disk Usage ---" >> $REPORT_FILE
df -h >> $REPORT_FILE
echo "" >> $REPORT_FILE
echo "--- Top 5 CPU Processes ---" >> $REPORT_FILE
ps aux --sort=-%cpu | head -6 >> $REPORT_FILE
echo "" >> $REPORT_FILE
echo "--- Top 5 Memory Processes ---" >> $REPORT_FILE
ps aux --sort=-%mem | head -6 >> $REPORT_FILE
echo "" >> $REPORT_FILE
echo "--- Network Connections ---" >> $REPORT_FILE
ss -tunap | wc -l >> $REPORT_FILE
echo "" >> $REPORT_FILE
echo "--- Failed SSH Attempts (last 7 days) ---" >> $REPORT_FILE
awk -v date="$(date --date="7 days ago" +%b %e)" "$0 > date" /var/log/auth.log | grep "Failed password" | wc -l >> $REPORT_FILE
echo "=============================================" >> $REPORT_FILE
echo "End of Report" >> $REPORT_FILE
mail -s "Weekly Server Report: $(hostname)" admin@example.com < $REPORT_FILE
rm $REPORT_FILE
✅ Weekly server report configured. You will receive regular health summaries.