slogan3

Ontwikkel een Bash of PowerShell Script voor Geavanceerde Automatische Foutdetectie en Herstel op Servers

description

Met deze prompt kun je een geavanceerd script creëren dat niet alleen serverfouten automatisch detecteert, maar ook zelfstandig herstel uitvoert en fouten logt. Dit vermindert downtime, versnelt probleemoplossing en zorgt voor een stabielere serveromgeving, waardoor je efficiënter serverbeheer kunt voeren dan met handmatige monitoring.

prompt

Help me een Bash- of PowerShell-script te maken dat automatisch serverfouten detecteert, diagnosticeert en herstelt. Fouttypes om te monitoren: <voer de fouttypes in die je wilt detecteren ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een eenvoudig Bash-script dat je kunt gebruiken om serverfouten te detecteren, te diagnosticeren en hersteltaken uit te voeren. Dit script controleert op webserver crashes (bijvoorbeeld op Apache of Nginx) en diskruimteproblemen. Het logt alle activiteiten in `/var/log/server_error.log` en voert automatische herstelacties uit zoals de webserver herstarten en oude logbestanden verwijderen. ```bash #!/bin/bash # Logbestand LOGFILE="/var/log/server_error.log" # Webserver processen WEBSERVERS=("apache2" "nginx") # Diskruimte drempel percentage DISK_THRESHOLD=10 # Functie om te loggen log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOGFILE" } # Check webserver status check_webserver() { for server in "${WEBSERVERS[@]}"; do if ! pgrep -x "$server" > /dev/null; then log "Webserver $server niet actief. Herstart wordt geprobeerd." systemctl restart "$server" if pgrep -x "$server" > /dev/null; then log "Webserver $server succesvol herstart." else log "Fout bij het herstarten van $server." fi fi done } # Check diskruimte check_disk_space() { # Controleer alle gemonteerde bestanden systemen df -H --exclude-type=tmpfs --exclude-type=devtmpfs | while read -r line; do # Parse het output used=$(echo "$line" | awk '{print $5}' | sed 's/%//') mount_point=$(echo "$line" | awk '{print $6}') if [ "$used" -ge "$DISK_THRESHOLD" ]; then log "Waarschuwing: Schijf op $mount_point is voor $used% vol." # Optioneel: verwijder oude logs in een specifieke directory LOGDIR="/var/log/oude_logs" if [ -d "$LOGDIR" ]; then find "$LOGDIR" -type f -mtime +30 -exec rm -f {} \; -exec log "Verwijderd oud logbestand: {}" \; fi fi done } # Main controlefunctie main() { check_webserver check_disk_space } # Uitvoeren main ``` **Gebruik:** - Sla dit script op als bijvoorbeeld `/usr/local/bin/server_monitor.sh`. - Maak het uitvoerbaar met `chmod +x /usr/local/bin/server_monitor.sh`. - Plan het bijvoorbeeld met cron om regelmatig te draaien, zoals elke 5 minuten: ```bash */5 * * * * /usr/local/bin/server_monitor.sh ``` **Opmerking:** - Pas de webserver namen en logbestandslocaties aan indien nodig. - Zorg dat het script voldoende rechten heeft om services te herstarten en logs te verwijderen.
provider: deepseek
model: deepseek-chat
Ik zal je helpen een Bash-script te maken voor deze taak. Hier is een compleet script: ```bash #!/bin/bash # Configuratie LOG_FILE="/var/log/server_error.log" DISK_SPACE_THRESHOLD=90 WEBSERVER_SERVICE="apache2" # Verander naar "nginx" of andere webserver # Functie om te loggen log_error() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE" } # Functie om webserver status te controleren check_webserver() { if ! systemctl is-active --quiet "$WEBSERVER_SERVICE"; then log_error "WEBSERVER CRASH: $WEBSERVER_SERVICE is niet actief" restart_webserver return 1 fi return 0 } # Functie om schijfruimte te controleren check_disk_space() { local usage=$(df / | awk 'NR==2 {print $5}' | sed 's/%//') if [ "$usage" -ge "$DISK_SPACE_THRESHOLD" ]; then log_error "DISK SPACE ERROR: Schijfruimte is $usage% (drempel: $DISK_SPACE_THRESHOLD%)" cleanup_old_logs return 1 fi return 0 } # Functie om webserver te herstarten restart_webserver() { log_error "Herstarten van $WEBSERVER_SERVICE..." systemctl restart "$WEBSERVER_SERVICE" if systemctl is-active --quiet "$WEBSERVER_SERVICE"; then log_error "Herstart succesvol: $WEBSERVER_SERVICE is nu actief" else log_error "Herstart mislukt: $WEBSERVER_SERVICE kon niet worden gestart" fi } # Functie om oude logbestanden op te ruimen cleanup_old_logs() { log_error "Opruimen oude logbestanden..." # Verwijder logbestanden ouder dan 30 dagen find /var/log -name "*.log" -type f -mtime +30 -delete 2>/dev/null find /var/log -name "*.gz" -type f -mtime +30 -delete 2>/dev/null # Ruim tijdelijke bestanden op rm -rf /tmp/* 2>/dev/null rm -rf /var/tmp/* 2>/dev/null log_error "Opruimen voltooid" } # Hoofdfunctie main() { log_error "=== Monitoring gestart ===" # Controleer webserver if ! check_webserver; then log_error "Webserver probleem gedetecteerd en aangepakt" fi # Controleer schijfruimte if ! check_disk_space; then log_error "Schijfruimte probleem gedetecteerd en aangepakt" fi log_error "=== Monitoring voltooid ===" } # Script uitvoeren main ``` **Installatie en gebruik:** 1. **Script opslaan:** ```bash sudo nano /usr/local/bin/server_monitor.sh ``` 2. **Uitvoerbaar maken:** ```bash sudo chmod +x /usr/local/bin/server_monitor.sh ``` 3. **Cronjob toevoegen (elke 5 minuten):** ```bash sudo crontab -e ``` Voeg toe: ```bash */5 * * * * /usr/local/bin/server_monitor.sh ``` 4. **Log directory aanmaken (indien nodig):** ```bash sudo mkdir -p /var/log sudo touch /var/log/server_error.log sudo chmod 644 /var/log/server_error.log ``` **Aanpassingen die je mogelijk moet maken:** - Pas `WEBSERVER_SERVICE` aan naar jouw webserver (apache2, nginx, httpd) - Pas `DISK_SPACE_THRESHOLD` aan naar gewenste percentage - Voeg eventueel extra cleanup regels toe in `cleanup_old_logs()` **Belangrijke opmerkingen:** - Test het script eerst handmatig - Controleer de logfile regelmatig - Pas de cleanup parameters aan op basis van je specifieke needs - Zorg voor adequate backups voordat je automatische cleanup implementeert Het script zal automatisch monitoren en problemen oplossen volgens je specificaties!