COMPLETED
Technical summary
Bash tool designed for hosting availability triage. It scans domains by scope (all, by user, by reseller, or single domain), validates DNS resolution against expected server IPs, performs HTTP checks with configurable timeout, and classifies issues using content signatures (default pages, suspended account, database errors, potential compromise indicators).
Executed scope
- Legacy utility rewrite in Bash with option-level functional parity.
- Operational compatibility with cPanel/WHM and Plesk.
- Scope-based execution modes (
-a,-u,-r,-d) for targeted triage. - Verbose mode (
-v) for full audit including healthy websites. - Timeout and load-aware backoff to avoid worsening overloaded hosts.
- Standardized HTTP status parsing and incident classification.
Operation modes
# all domains (issues only)
./checksites.sh -a
# full scan including healthy sites
./checksites.sh -a -v
# single domain
./checksites.sh -d example.com
# all domains from one cPanel user
./checksites.sh -u username
# all domains under one reseller
./checksites.sh -r resellername
# custom timeout
./checksites.sh -a -t 15
Implemented detections
- DNS: non-existent domains, external resolution, pointing mismatch.
- HTTP: error codes (
403,404,500,502,503), connection failures, unexpected redirects. - Content signatures:
- defaultwebpage.cgi (cPanel default) - Domain Default Page (Plesk default) - Database Error - Account Suspended - Index of / - potential compromise markers (hacked, shell, exploit, WebShell)
Server-load protection
The script checks load average and sleeps when the host is above safe thresholds, reducing risk during incident windows:
Load Average: 15.5, cores: 8
Load Average: 15.5, sleeping for 10 seconds
If load remains high after retries, it requests confirmation before continuing.
Continuous monitoring
# hourly cron with email alert on failures
0 * * * * /usr/local/bin/checksites -a > /tmp/sites_check.txt 2>&1 || \
cat /tmp/sites_check.txt | mail -s "Site Issues on $(hostname)" admin@example.com
Operational troubleshooting
# DNS dependencies
yum install -y bind-utils
apt-get install -y dnsutils
# mysql client for plesk environments
yum install -y mysql
apt-get install -y mysql-client
# run with proper privileges
sudo ./checksites.sh -a
Stack and tooling
- Shell Script / Bash
- cURL
- dig / DNS utils
- mysql client (Plesk)
- cPanel/WHM
- Plesk
Operational tags
- Bash
- Monitoring
- cPanel
- Plesk
Operational outcome
- Reduced diagnosis time for multi-tenant hosting availability incidents.
- Standardized DNS/HTTP incident triage workflow for NOC/SRE teams.
- Improved remediation predictability across cPanel and Plesk environments.
GitHub progress (issues)
Real-time panel with latest repository issues.
live feed
open issues on GitHubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
Real results
Bash rewrite of the checksites utility to batch-validate website status on cPanel/WHM and Plesk servers, with DNS, HTTP and critical-content pattern detection.
Architecture and organization
- Shell Script / Bash
- cURL
- dig/mysql CLI
- cPanel/WHM
- Plesk
- awk/sed/grep
Execution and operations
The project follows reproducible execution flow with technical validation in production-like environments.
Screenshots
Talk about this project
Apply this implementation pattern in your environment and accelerate delivery with technical consistency.