#Server Management Scripts
Essential scripts for managing servers in production.
#Health Check Script
bash
1#!/bin/bash
2set -euo pipefail
3
4SERVERS=("web-01" "web-02" "api-01" "db-01")
5
6check_server() {
7 local server=$1
8 local port=${2:-22}
9
10 if nc -zw5 "$server" "$port" 2>/dev/null; then
11 echo "✅ $server:$port - healthy"
12 return 0
13 else
14 echo "❌ $server:$port - unreachable"
15 return 1
16 fi
17}
18
19main() {
20 echo "=== Server Health Check ==="
21 echo "Time: $(date)"
22 echo ""
23
24 local failed=0
25 for server in "${SERVERS[@]}"; do
26 check_server "$server" || ((failed++))
27 done
28
29 echo ""
30 echo "Summary: $((${#SERVERS[@]} - failed))/${#SERVERS[@]} healthy"
31
32 [ $failed -eq 0 ] || exit 1
33}
34
35main#Log Rotation Script
bash
1#!/bin/bash
2LOG_DIR="/var/log/myapp"
3DAYS_TO_KEEP=7
4
5find "$LOG_DIR" -name "*.log" -mtime +$DAYS_TO_KEEP -delete
6find "$LOG_DIR" -name "*.gz" -mtime +30 -delete
7
8# Compress old logs
9find "$LOG_DIR" -name "*.log" -mtime +1 -exec gzip {} \;
10
11echo "Log rotation complete"#Backup Script
bash
1#!/bin/bash
2set -euo pipefail
3
4BACKUP_DIR="/backup"
5DATE=$(date +%Y%m%d)
6RETENTION_DAYS=7
7
8# Create backup
9tar -czf "$BACKUP_DIR/app-$DATE.tar.gz" /var/www/app
10
11# Remove old backups
12find "$BACKUP_DIR" -name "app-*.tar.gz" -mtime +$RETENTION_DAYS -delete
13
14echo "Backup complete: app-$DATE.tar.gz"#Deployment Script
bash
1#!/bin/bash
2set -euo pipefail
3
4APP_DIR="/var/www/app"
5RELEASE_DIR="/releases"
6VERSION=${1:-latest}
7
8echo "Deploying version: $VERSION"
9
10# Download release
11wget -q "https://releases.example.com/$VERSION.tar.gz" -O /tmp/release.tar.gz
12
13# Extract
14mkdir -p "$RELEASE_DIR/$VERSION"
15tar -xzf /tmp/release.tar.gz -C "$RELEASE_DIR/$VERSION"
16
17# Switch symlink
18ln -sfn "$RELEASE_DIR/$VERSION" "$APP_DIR"
19
20# Restart services
21sudo systemctl restart myapp
22
23echo "Deployment complete!"#Summary
Key server management tasks:
- Health monitoring
- Log management
- Backups
- Deployments
- Service restarts