slogan3

Help me een Bash- of PowerShell-script maken voor geautomatiseerde servergezondheidsdiagnoses.

description

Door dit script te gebruiken, kunt u proactief de gezondheid van uw server monitoren, downtime verminderen en de prestaties verbeteren door tijdige diagnoses en bruikbare inzichten.

prompt

try_prompt

Ik wil een script ontwikkelen dat geautomatiseerde gezondheidsdiagnoses uitvoert op mijn server, waarbij belangrijke statistieken zoals CPU-belasting, geheugen gebruik, schijfruimte en netwerkconnectiviteit worden gecontroleerd. Geef het servertype op: {{server_type}}. Welke spec ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een overzicht van de benodigde diagnostische controles en een schets voor een script dat deze uitvoert op een Linux-server, inclusief het genereren van een PDF-rapport met samenvatting en aanbevelingen. **Specifieke diagnostische controles:** 1. **CPU-belasting controleren:** - Gebruik `top`, `htop`, of `mpstat` om de CPU-belasting te meten. - Meet de CPU-gebruikerspercentages over een korte periode. - Controleer of de CPU-belasting boven een drempelwaarde (bijvoorbeeld 80%) ligt. 2. **Geheugengebruik controleren:** - Gebruik `free -m` of `vmstat` om het geheugengebruik te meten. - Controleer op overmatig gebruik, zoals meer dan 90% van het geheugen in gebruik. 3. **Schijfruimte controleren:** - Gebruik `df -h` om de schijfruimte per partitie te bekijken. - Identificeer partities die bijna vol zijn (bijvoorbeeld meer dan 90% gevuld). 4. **Netwerkconnectiviteit testen:** - Ping belangrijke externe servers (bijvoorbeeld Google DNS 8.8.8.8). - Controleer de netwerkstatus en latency. - Test de bereikbaarheid van essentiële services. --- **Voorbeeld van het script in Bash met rapportage in PDF:** ```bash #!/bin/bash # Bestandsnaam voor het rapport rapport="server_diagnose_$(date +%Y%m%d).pdf" # Functie om tekst te verzamelen echo "Serverdiagnose Rapport" > temp_report.txt echo "Datum: $(date)" >> temp_report.txt echo "----------------------------------------" >> temp_report.txt # CPU-belasting controleren cpu_utilization=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}') cpu_percentage=$(echo "$cpu_utilization * 100" | bc) echo "CPU-belasting: ${cpu_percentage}% gebruikt." >> temp_report.txt if (( $(echo "$cpu_percentage > 80" |bc -l) )); then echo "Waarschuwing: Hoge CPU-belasting!" >> temp_report.txt fi # Geheugen gebruik controleren mem_info=$(free -m | awk 'NR==2{print $3,$4,$2}') used_mem=$(echo $mem_info | awk '{print $1}') free_mem=$(echo $mem_info | awk '{print $2}') total_mem=$(echo $mem_info | awk '{print $3}') percent_used=$(( 100 * used_mem / total_mem )) echo "Geheugen: $used_mem MB gebruikt van $total_mem MB ($percent_used%)." >> temp_report.txt if [ "$percent_used" -gt 90 ]; then echo "Waarschuwing: Hoog geheugengebruik!" >> temp_report.txt fi # Schijfruimte controleren df -h --output=source,pcent | tail -n +2 | while read line; do partition=$(echo $line | awk '{print $1}') usage=$(echo $line | awk '{print $2}' | tr -d '%') echo "Schijfruimte op $partition: $usage% gebruikt." >> temp_report.txt if [ "$usage" -gt 90 ]; then echo "Waarschuwing: Partitie $partition bijna vol." >> temp_report.txt fi done # Netwerkconnectiviteit testen ping -c 4 8.8.8.8 > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "Netwerk: Verbinding met 8.8.8.8 succesvol." >> temp_report.txt else echo "Waarschuwing: Geen verbinding met 8.8.8.8." >> temp_report.txt fi # Converteer rapport naar PDF # Vereist dat `pandoc` en `wkhtmltopdf` geïnstalleerd zijn # Maak een eenvoudige Markdown of HTML versie cat <<EOF > rapport.html <html> <head><title>Server Diagnostisch Rapport</title></head> <body> <h1>Server Diagnostisch Rapport</h1> <pre> $(cat temp_report.txt) </pre> </body> </html> EOF # Converteer HTML naar PDF wkhtmltopdf rapport.html "$rapport" # Verwijder tijdelijke bestanden rm temp_report.txt rapport.html echo "Rapport gegenereerd: $rapport" ``` **Opmerkingen:** - Installeer de benodigde tools: `bc`, `wkhtmltopdf`, `top` (standaard), `df`, `ping`. - Pas drempelwaarden aan op basis van jouw eisen. - Voor meer gedetailleerde analyses kun je de controles uitbreiden. --- **Samenvatting:** Je script voert de belangrijkste diagnostische controles uit (CPU, geheugen, schijfruimte, netwerk), verzamelt bevindingen, en genereert een PDF-rapport met waarschuwingen en aanbevelingen. Hierdoor krijg je snel inzicht in de gezondheid van je Linux-server en kun je tijdig actie ondernemen bij problemen.
provider: deepseek
model: deepseek-chat
Hier is een voorbeeld van een Linux-script voor geautomatiseerde gezondheidsdiagnoses van uw server, inclusief de gevraagde CPU-belastingcontrole en PDF-rapportage: ```bash #!/bin/bash # Server Health Diagnostic Script # Auteur: [Uw Naam] # Datum: $(date) # Bestandsnamen definiëren LOG_FILE="/var/log/server_health.log" REPORT_FILE="/tmp/server_health_report.txt" PDF_REPORT="/var/www/html/reports/server_health_$(date +%Y%m%d_%H%M%S).pdf" # Functie om logboek bij te houden log_message() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE } # Rapportkop aanmaken create_report_header() { echo "SERVER GEZONDHEIDSRAPPORT" > $REPORT_FILE echo "==========================" >> $REPORT_FILE echo "Datum: $(date)" >> $REPORT_FILE echo "Hostnaam: $(hostname)" >> $REPORT_FILE echo "" >> $REPORT_FILE } # 1. CPU-BELASTING CONTROLE check_cpu_usage() { echo "=== CPU ANALYSE ===" >> $REPORT_FILE local cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}') local load_avg=$(cat /proc/loadavg | awk '{print $1", "$2", "$3}') local cpu_cores=$(nproc) echo "Huidig CPU-gebruik: $cpu_usage%" >> $REPORT_FILE echo "Gemiddelde belasting (1, 5, 15 min): $load_avg" >> $REPORT_FILE echo "Aantal CPU-cores: $cpu_cores" >> $REPORT_FILE # Drempelwaarden en aanbevelingen if (( $(echo "$cpu_usage > 90" | bc -l) )); then echo "STATUS: KRITIEK" >> $REPORT_FILE echo "AANBEVELING: Onderzoek processen met 'top' of 'htop', overweeg optimalisatie of schaling" >> $REPORT_FILE elif (( $(echo "$cpu_usage > 80" | bc -l) )); then echo "STATUS: WAARSCHUWING" >> $REPORT_FILE echo "AANBEVELING: Monitor trends, overweeg prestatie-optimalisatie" >> $REPORT_FILE else echo "STATUS: NORMAAL" >> $REPORT_FILE echo "AANBEVELING: Huidige prestaties zijn acceptabel" >> $REPORT_FILE fi echo "" >> $REPORT_FILE } # 2. GEHEUGENGEBRUIK CONTROLE check_memory_usage() { echo "=== GEHEUGEN ANALYSE ===" >> $REPORT_FILE local mem_info=$(free -m | grep Mem) local total_mem=$(echo $mem_info | awk '{print $2}') local used_mem=$(echo $mem_info | awk '{print $3}') local free_mem=$(echo $mem_info | awk '{print $4}') local mem_percent=$((used_mem * 100 / total_mem)) echo "Totaal geheugen: ${total_mem}MB" >> $REPORT_FILE echo "Gebruikt geheugen: ${used_mem}MB" >> $REPORT_FILE echo "Beschikbaar geheugen: ${free_mem}MB" >> $REPORT_FILE echo "Geheugengebruik: ${mem_percent}%" >> $REPORT_FILE if [ $mem_percent -gt 90 ]; then echo "STATUS: KRITIEK" >> $REPORT_FILE echo "AANBEVELING: Onderzoek geheugengebruik, overweeg swap-optimalisatie of uitbreiding" >> $REPORT_FILE elif [ $mem_percent -gt 80 ]; then echo "STATUS: WAARSCHUWING" >> $REPORT_FILE echo "AANBEVELING: Monitor geheugentrends, overweeg applicatie-optimalisatie" >> $REPORT_FILE else echo "STATUS: NORMAAL" >> $REPORT_FILE echo "AANBEVELING: Geheugengebruik is binnen acceptabele limieten" >> $REPORT_FILE fi echo "" >> $REPORT_FILE } # 3. SCHIJFRUIMTE CONTROLE check_disk_usage() { echo "=== SCHIJFRUIMTE ANALYSE ===" >> $REPORT_FILE echo "Partitie-informatie:" >> $REPORT_FILE df -h | grep -v tmpfs >> $REPORT_FILE echo "" >> $REPORT_FILE # Controleer kritieke partities local critical_usage=$(df / /home /var | awk 'NR>1 {print $5 " " $6}' | sed 's/%//') echo "Kritieke partitie-controle:" >> $REPORT_FILE echo "$critical_usage" | while read usage mount; do if [ $usage -gt 90 ]; then echo "KRITIEK: $mount is ${usage}% vol - Ruim schijf op" >> $REPORT_FILE elif [ $usage -gt 80 ]; then echo "WAARSCHUWING: $mount is ${usage}% vol - Monitor ruimtegebruik" >> $REPORT_FILE else echo "NORMAAL: $mount is ${usage}% vol" >> $REPORT_FILE fi done echo "" >> $REPORT_FILE } # 4. NETWERKCONNECTIVITEIT CONTROLE check_network_connectivity() { echo "=== NETWERK ANALYSE ===" >> $REPORT_FILE # Controleer basisconnectiviteit if ping -c 3 8.8.8.8 &> /dev/null; then echo "Internetconnectiviteit: BESCHIKBAAR" >> $REPORT_FILE else echo "Internetconnectiviteit: NIET BESCHIKBAAR" >> $REPORT_FILE fi # Controleer poorten echo "Poortcontrole:" >> $REPORT_FILE local ports=("22" "80" "443") for port in "${ports[@]}"; do if netstat -tuln | grep ":$port " > /dev/null; then echo "Poort $port: LUISTERT" >> $REPORT_FILE else echo "Poort $port: NIET BESCHIKBAAR" >> $REPORT_FILE fi done echo "" >> $REPORT_FILE } # 5. PDF RAPPORT GENEREREN generate_pdf_report() { # Installeer eerst text2pdf indien nodig: sudo apt-get install enscript if command -v enscript &> /dev/null && command -v ps2pdf &> /dev/null; then enscript -p /tmp/report.ps $REPORT_FILE ps2pdf /tmp/report.ps $PDF_REPORT rm /tmp/report.ps echo "PDF-rapport gegenereerd: $PDF_REPORT" >> $REPORT_FILE else echo "OPMERKING: enscript/ps2pdf niet geïnstalleerd. PDF-rapportage niet beschikbaar." >> $REPORT_FILE echo "Installeer met: sudo apt-get install enscript ps2pdf" fi } # HOOFDFUNCTIE main() { log_message "Server health check gestart" # Maak rapport directory aan mkdir -p /var/www/html/reports # Voer alle controles uit create_report_header check_cpu_usage check_memory_usage check_disk_usage check_network_connectivity # Genereer PDF generate_pdf_report log_message "Server health check voltooid" # Toon rapport locatie echo "Rapport gegenereerd: $REPORT_FILE" if [ -f "$PDF_REPORT" ]; then echo "PDF rapport: $PDF_REPORT" fi } # Script uitvoeren main ``` **Installatie- en gebruiksinstructies:** 1. **Opslaan als script:** ```bash sudo nano /usr/local/bin/server_health.sh ``` 2. **Uitvoerbaar maken:** ```bash sudo chmod +x /usr/local/bin/server_health.sh ``` 3. **PDF-ondersteuning installeren:** ```bash sudo apt-get update sudo apt-get install enscript ps2pdf ``` 4. **Uitvoeren:** ```bash sudo /usr/local/bin/server_health.sh ``` 5. **Cron-job voor automatische uitvoering (optioneel):** ```bash # Elke dag om 02:00 uitvoeren sudo crontab -e # Voeg toe: 0 2 * * * /usr/local/bin/server_health.sh ``` **Aanvullende aanbevelingen:** - Voeg e-mailmeldingen toe voor kritieke problemen - Bewaar historische rapporten voor trendanalyse - Pas drempelwaarden aan op basis van uw specifieke workload - Overweeg monitoringtools zoals Nagios of Zabbix voor uitgebreidere monitoring Het script controleert alle gevraagde componenten en genereert zowel een tekst- als PDF-rapport met duidelijke statusindicatoren en actie-aanbevelingen.