Ontwikkel een interactieve Bash of PowerShell script voor servermonitoring
description
Met deze prompt kun je een interactieve script ontwikkelen die real-time inzicht geeft in de status van je servers, waardoor je snel kunt reageren op problemen. Het verhoogt de efficiëntie van serverbeheer door dynamische controles en vereenvoudigt loganalyse zonder handmatige tussenkomst.
prompt
Help me een interactieve Bash of PowerShell script te maken die real-time servermonitoring uitvoert met opties om specifieke services te controleren, systeembelasting te bekijk ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een interactieve Bash-script die real-time servermonitoring biedt, inclusief opties om specifieke services te controleren, systeembelasting te bekijken en logs dynamisch te filteren. Het is een basis die je verder kunt uitbreiden naar jouw behoeften.
```bash
#!/bin/bash
# Functie om services te controleren
check_service() {
local service_name=$1
if systemctl is-active --quiet "$service_name"; then
echo "Service $service_name is actief."
else
echo "Service $service_name is niet actief."
fi
}
# Functie om systeembelasting te bekijken
show_load() {
echo "Huidige systeembelasting:"
uptime
echo ""
echo "CPU gebruik:"
top -bn1 | grep "Cpu(s)"
echo ""
echo "Memory gebruik:"
free -h
}
# Functie om logs te filteren
filter_logs() {
local log_file=$1
read -p "Voer zoekterm in voor filtering: " zoekterm
echo "Laten we zoeken naar '$zoekterm' in $log_file..."
tail -f "$log_file" | grep --line-buffered "$zoekterm"
}
while true; do
clear
echo "Server Monitoring Script"
echo "------------------------"
echo "1) Controleer services (Apache, MySQL)"
echo "2) Bekijk systeembelasting"
echo "3) Filter logs (/var/log/syslog, /var/log/auth.log)"
echo "4) Afsluiten"
read -p "Maak een keuze [1-4]: " keuze
case $keuze in
1)
echo "Controleer Apache..."
check_service "apache2" # Voor Debian/Ubuntu
# check_service "httpd" # Voor CentOS/RHEL
echo "Controleer MySQL..."
check_service "mysql"
read -p "Druk op Enter om terug te gaan..."
;;
2)
show_load
read -p "Druk op Enter om terug te gaan..."
;;
3)
echo "Kies logbestand:"
echo "a) /var/log/syslog"
echo "b) /var/log/auth.log"
read -p "Maak een keuze [a/b]: " logkeuze
case $logkeuze in
a)
filter_logs "/var/log/syslog"
;;
b)
filter_logs "/var/log/auth.log"
;;
*)
echo "Ongeldige keuze."
;;
esac
;;
4)
echo "Afsluiten..."
break
;;
*)
echo "Ongeldige keuze, probeer opnieuw."
read -p "Druk op Enter om opnieuw te proberen..."
;;
esac
done
```
**Hoe te gebruiken:**
1. Sla dit script op als bijvoorbeeld `server_monitor.sh`.
2. Maak het uitvoerbaar met: `chmod +x server_monitor.sh`.
3. Voer het uit met: `./server_monitor.sh`.
**Aanpassingen:**
- Pas de servicenames aan indien nodig, afhankelijk van je distributie (`apache2` voor Debian/Ubuntu, `httpd` voor CentOS/RHEL).
- Voeg eventueel meer logs of monitoring-opties toe.
- Voor geavanceerde filtering kun je extra opties toevoegen.
Als je meer wilt, bijvoorbeeld grafieken of meer gedetailleerde statistieken, kun je tools zoals `htop`, `glances`, of grafische dashboards integreren.
provider: deepseek
model: deepseek-chat
Zeker! Hier is een interactief Bash-script voor real-time servermonitoring op Ubuntu/Debian systemen:
```bash
#!/bin/bash
# Kleuren voor output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Configuratie
SERVICES=("apache2" "mysql")
LOG_FILES=("/var/log/syslog" "/var/log/auth.log")
# Functie om services te controleren
check_services() {
echo -e "${BLUE}=== SERVICE STATUS ===${NC}"
for service in "${SERVICES[@]}"; do
if systemctl is-active --quiet "$service"; then
echo -e "${GREEN}✓ $service is running${NC}"
else
echo -e "${RED}✗ $service is not running${NC}"
fi
done
echo ""
}
# Functie om systeembelasting te tonen
show_system_load() {
echo -e "${BLUE}=== SYSTEM LOAD ===${NC}"
echo "CPU Usage: $(top -bn1 | grep "Cpu(s)" | awk '{print $2}')%"
echo "Memory Usage: $(free -h | grep Mem | awk '{print $3"/"$2}')"
echo "Load Average: $(uptime | awk -F'load average:' '{print $2}')"
echo ""
}
# Functie om logs te monitoren
monitor_logs() {
echo -e "${BLUE}=== LOG MONITORING ===${NC}"
echo "1. Syslog monitoren"
echo "2. Auth.log monitoren"
echo "3. Beide logs monitoren"
echo "4. Terug naar hoofdmenu"
read -p "Kies een optie (1-4): " log_choice
case $log_choice in
1)
echo -e "${YELLOW}Monitoring syslog (Ctrl+C om te stoppen)...${NC}"
tail -f "${LOG_FILES[0]}"
;;
2)
echo -e "${YELLOW}Monitoring auth.log (Ctrl+C om te stoppen)...${NC}"
tail -f "${LOG_FILES[1]}"
;;
3)
echo -e "${YELLOW}Monitoring beide logs (Ctrl+C om te stoppen)...${NC}"
tail -f "${LOG_FILES[0]}" "${LOG_FILES[1]}"
;;
4)
return
;;
*)
echo -e "${RED}Ongeldige keuze${NC}"
;;
esac
}
# Functie om logs te filteren
filter_logs() {
echo -e "${BLUE}=== LOG FILTERING ===${NC}"
echo "1. Filter syslog op fouten"
echo "2. Filter auth.log op failed login attempts"
echo "3. Aangepaste filter"
echo "4. Terug naar hoofdmenu"
read -p "Kies een optie (1-4): " filter_choice
case $filter_choice in
1)
echo -e "${YELLOW}Fouten in syslog:${NC}"
grep -i "error\|fail\|critical" "${LOG_FILES[0]}" | tail -20
;;
2)
echo -e "${YELLOW}Failed login attempts:${NC}"
grep -i "fail" "${LOG_FILES[1]}" | tail -20
;;
3)
read -p "Voer zoekterm in: " search_term
read -p "Kies logbestand (1: syslog, 2: auth.log): " log_select
if [ "$log_select" -eq 1 ]; then
grep -i "$search_term" "${LOG_FILES[0]}" | tail -20
elif [ "$log_select" -eq 2 ]; then
grep -i "$search_term" "${LOG_FILES[1]}" | tail -20
else
echo -e "${RED}Ongeldige keuze${NC}"
fi
;;
4)
return
;;
*)
echo -e "${RED}Ongeldige keuze${NC}"
;;
esac
}
# Hoofdmenu
while true; do
echo -e "${BLUE}=== SERVER MONITORING TOOL ===${NC}"
echo "1. Service status controleren"
echo "2. Systeembelasting bekijken"
echo "3. Logs real-time monitoren"
echo "4. Logs filteren"
echo "5. Alles tonen"
echo "6. Afsluiten"
echo ""
read -p "Kies een optie (1-6): " choice
case $choice in
1)
check_services
;;
2)
show_system_load
;;
3)
monitor_logs
;;
4)
filter_logs
;;
5)
check_services
show_system_load
;;
6)
echo -e "${GREEN}Afsluiten...${NC}"
exit 0
;;
*)
echo -e "${RED}Ongeldige keuze. Probeer opnieuw.${NC}"
;;
esac
echo "Druk op Enter om door te gaan..."
read -r
clear
done
```
## Gebruiksaanwijzing:
1. **Script opslaan**: Sla het op als `server-monitor.sh`
2. **Uitvoerbaar maken**: `chmod +x server-monitor.sh`
3. **Uitvoeren**: `./server-monitor.sh`
## Vereisten:
- Bash shell
- Systemd (voor service monitoring)
- Toegangsrechten voor logbestanden (mogelijk sudo nodig)
## Functionaliteiten:
- ✅ Apache2 & MySQL service monitoring
- ✅ Real-time CPU/memory monitoring
- ✅ Live log monitoring met `tail -f`
- ✅ Geavanceerd log filtering
- ✅ Kleurgecodeerde output
- ✅ Interactief menu
Voor PowerShell (Windows) zou een vergelijkbaar script mogelijk zijn, maar gezien je specifieke services en logbestanden vermeldde, is Bash de meest geschikte keuze voor Linux servers.