A comprehensive collection of production-ready Bash scripts for DevOps engineers, system administrators, and automation enthusiasts. These scripts handle everything from system monitoring and backups to Kubernetes management and CI/CD integrations.
This repository contains battle-tested Bash scripts designed to automate common tasks in modern infrastructure management. Whether you're managing bare-metal servers, cloud infrastructure, or containerized applications, you'll find utilities to streamline your workflow.
| Script | Description |
|---|---|
account-expiry-notify.sh |
Monitors and notifies about upcoming user account expirations |
user-account-management.sh |
Automates user account creation, modification, and deletion |
package-updates.sh |
Checks for and manages system package updates |
system-resource-monitor.sh |
Monitors CPU, memory, and disk usage with threshold alerts |
system-monitoring.sh |
Comprehensive system health monitoring script |
health-check.sh |
Performs system health checks and reports status |
http-status.sh |
Checks HTTP endpoint status and availability |
monitor-open-ports.sh |
Scans and monitors open network ports |
process-monitor-alert.sh |
Monitors specific processes and alerts on failures |
| Script | Description |
|---|---|
jenkins-job.sh |
Triggers and manages Jenkins job executions |
argo-cd-sync.sh |
Synchronizes ArgoCD applications |
auto-deployment.sh |
Automates application deployment workflows |
sonarqube-slack-notify.sh |
Sends SonarQube analysis results to Slack |
create-confluence-page.sh |
Creates and updates Confluence documentation pages |
git-repo-stats.sh |
Generates comprehensive Git repository statistics |
| Script | Description |
|---|---|
disk-usage-monitor.sh |
Monitors disk usage and sends alerts on thresholds |
grafana-metrics.sh |
Pushes custom metrics to Grafana |
slack-notify.sh |
Sends notifications to Slack channels |
splunk-search.sh |
Performs automated Splunk log searches |
check-ssl-expiry.sh |
Monitors SSL certificate expiration dates |
docker-log-monitor.sh |
Monitors and analyzes Docker container logs |
| Script | Description |
|---|---|
backup.sh |
Performs weekly automated backups |
rsync-backup.sh |
Uses rsync for efficient incremental backups |
scp-remote-backup.sh |
Securely copies backups to remote servers |
rotate-old-files.sh |
Implements file rotation policies |
log-rotation.sh |
Manages log file rotation and archival |
log-file-cleanup.sh |
Cleans up old log files based on retention policies |
| Script | Description |
|---|---|
kubectl-namespace-cleanup.sh |
Cleans up unused Kubernetes namespaces |
scale-deployment.sh |
Scales Kubernetes deployments automatically |
restart-containers.sh |
Restarts Docker containers based on criteria |
gc-cleanup.sh |
Performs garbage collection and cleanup tasks |
| Script | Description |
|---|---|
random-password-generator.sh |
Generates secure random passwords |
- Bash 4.0 or higher
- Standard Unix utilities (grep, awk, sed, etc.)
- Specific tools required by individual scripts:
kubectlfor Kubernetes scriptsdockerfor container management scriptscurlorwgetfor HTTP-based scriptsjqfor JSON parsing (some scripts)rsyncfor backup scripts- API tokens/credentials for integration scripts (Jenkins, Slack, etc.)
- Clone the repository:
git clone https://github.com/wesleyscholl/bash-scripts.git
cd bash-scripts- Make scripts executable:
chmod +x *.sh- (Optional) Add scripts to your PATH:
export PATH=$PATH:$(pwd)Or copy scripts to /usr/local/bin/:
sudo cp *.sh /usr/local/bin/Each script includes inline documentation and usage examples. Run any script with the -h or --help flag for detailed information:
./backup.sh --help./check-ssl-expiry.sh example.com 443./disk-usage-monitor.sh /dev/sda1 80./kubectl-namespace-cleanup.sh --dry-runMany scripts support configuration through:
- Environment variables
- Configuration files (
.confor.envfiles) - Command-line arguments
Check individual script documentation for specific configuration options.
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-script) - Commit your changes (
git commit -m 'Add amazing script') - Push to the branch (
git push origin feature/amazing-script) - Open a Pull Request
- Include error handling and input validation
- Add usage documentation and examples
- Follow consistent naming conventions
- Test thoroughly before submitting
- Include comments for complex logic
- Never commit sensitive credentials or tokens
- Use environment variables or secure vaults for secrets
- Review scripts before running in production
- Follow the principle of least privilege
This project is licensed under the MIT License - see the LICENSE file for details.
- Built by @wesleyscholl with contributions from the community
- Thanks to all contributors who help improve these scripts
- Open an issue for bug reports
- Start a discussion for questions
- Check existing scripts for examples and patterns
β Star this repository if you find it useful!