Ontwikkel een Bash- of PowerShell-script voor geautomatiseerde serverconfiguratievalidatie
description
Met deze prompt kan de gebruiker snel een script ontwikkelen dat automatisch serverconfiguraties controleert en afwijkingen detecteert, waardoor handmatige fouten en downtime worden verminderd. Het bespaart tijd, verhoogt de betrouwbaarheid en helpt bij het naleven van configuratiestandaarden, wat beter is dan ad-hoc of handmatige controles.
prompt
Help me een Bash- of PowerShell-script te maken dat automatisch de configuratie van mijn server controleert op afwijkingen en consistentieproblemen. Servertype: <voer het type server in waarop het script draait> Configuratiebestanden of instellingen om te controleren: <beschr ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld Bash-script dat de gevraagde controles uitvoert en een rapport genereert in /var/log/config_validation_report.txt:
```bash
#!/bin/bash
# Bestandslocaties
NGINX_CONF="/etc/nginx/nginx.conf"
SSHD_CONF="/etc/ssh/sshd_config"
REPORT="/var/log/config_validation_report.txt"
# Maak rapportbestand aan of leeg het
echo "Configuratie validatierapport - $(date)" > $REPORT
echo "=========================================" >> $REPORT
echo "" >> $REPORT
# Controle nginx.conf
echo "Controle nginx.conf:" >> $REPORT
if [ -f "$NGINX_CONF" ]; then
# Voeg hier specifieke controles toe, bijvoorbeeld syntax check
nginx -t -c "$NGINX_CONF" &>> $REPORT
if [ $? -eq 0 ]; then
echo " [OK] nginx.conf syntax is correct." >> $REPORT
else
echo " [FOUT] nginx.conf bevat syntaxfouten." >> $REPORT
fi
else
echo " [FOUT] Bestand $NGINX_CONF niet gevonden." >> $REPORT
fi
echo "" >> $REPORT
# Controle sshd_config
echo "Controle sshd_config:" >> $REPORT
if [ -f "$SSHD_CONF" ]; then
# Check of root login is uitgeschakeld
if grep -E "^PermitRootLogin\s+no" "$SSHD_CONF" > /dev/null; then
echo " [OK] Root login is uitgeschakeld." >> $REPORT
else
echo " [WAARSCHUWING] Root login is niet uitgeschakeld." >> $REPORT
fi
# Voeg extra controles toe indien gewenst
else
echo " [FOUT] Bestand $SSHD_CONF niet gevonden." >> $REPORT
fi
echo "" >> $REPORT
# Controle firewall om poort 22 te sluiten
echo "Controle firewall instellingen:" >> $REPORT
# Voor systemen met ufw
if command -v ufw > /dev/null; then
ufw_status=$(ufw status | grep '22/tcp')
if echo "$ufw_status" | grep -q "ALLOW"; then
echo " [FOUT] Poort 22 wordt toegestaan via UFW." >> $REPORT
elif echo "$ufw_status" | grep -q "DENY"; then
echo " [OK] Poort 22 is geblokkeerd via UFW." >> $REPORT
else
echo " [OPMERKING] Poort 22 status niet duidelijk via UFW." >> $REPORT
fi
# Voor systemen met firewalld
elif command -v firewall-cmd > /dev/null; then
if firewall-cmd --list-ports | grep -w 22/tcp > /dev/null; then
echo " [FOUT] Poort 22 wordt toegestaan via firewalld." >> $REPORT
else
echo " [OK] Poort 22 is niet toegestaan via firewalld." >> $REPORT
fi
else
echo " [OPMERKING] Geen ufw of firewalld gevonden; controleer firewall handmatig." >> $REPORT
fi
echo "" >> $REPORT
echo "Validatie voltooid. Zie rapport in $REPORT."
```
**Gebruik:**
1. Sla dit script op bijvoorbeeld als `validate_server_config.sh`.
2. Maak het uitvoerbaar met: `chmod +x validate_server_config.sh`.
3. Voer het script uit als root of met sudo: `sudo ./validate_server_config.sh`.
Dit script controleert de syntax van nginx, of root login uitstaat in sshd, en of poort 22 geblokkeerd is in de firewall, en schrijft alle bevindingen naar het rapportbestand. Je kunt extra controles toevoegen naar wens.
provider: deepseek
model: deepseek-chat
Hier is een Bash-script dat aan uw vereisten voldoet:
```bash
#!/bin/bash
# Configuratie
LOG_FILE="/var/log/config_validation_report.txt"
NGINX_CONF="/etc/nginx/nginx.conf"
SSHD_CONF="/etc/ssh/sshd_config"
# Maak logbestand aan of wis vorige inhoud
echo "Configuratie Validatie Rapport - $(date)" > $LOG_FILE
echo "==============================================" >> $LOG_FILE
echo "" >> $LOG_FILE
# Functie om checks uit te voeren en resultaten te loggen
run_check() {
local check_name="$1"
local command="$2"
local expected="$3"
echo "Check: $check_name" >> $LOG_FILE
echo "Uitvoering: $command" >> $LOG_FILE
echo "Verwacht: $expected" >> $LOG_FILE
if eval $command; then
echo "Status: PASS" >> $LOG_FILE
echo "Resultaat: Configuratie voldoet aan de vereiste" >> $LOG_FILE
else
echo "Status: FAIL" >> $LOG_FILE
echo "Resultaat: Configuratie wijkt af van de vereiste" >> $LOG_FILE
fi
echo "----------------------------------------------" >> $LOG_FILE
echo "" >> $LOG_FILE
}
# 1. Check SSH Root Login
run_check \
"SSH Root Login Uitgeschakeld" \
"grep -E '^PermitRootLogin no' $SSHD_CONF" \
"PermitRootLogin moet op 'no' staan"
# 2. Check Firewall Poort 22
run_check \
"Firewall Poort 22 Gesloten" \
"! sudo ufw status | grep -E '^22.*ALLOW'" \
"Poort 22 mag niet open staan in UFW"
# 3. Check Nginx Configuratie Syntax
echo "Check: Nginx Configuratie Syntax" >> $LOG_FILE
echo "Uitvoering: sudo nginx -t -c $NGINX_CONF" >> $LOG_FILE
echo "Verwacht: Geen syntax errors" >> $LOG_FILE
if sudo nginx -t -c $NGINX_CONF &>> $LOG_FILE; then
echo "Status: PASS" >> $LOG_FILE
echo "Resultaat: Nginx configuratie is syntactisch correct" >> $LOG_FILE
else
echo "Status: FAIL" >> $LOG_FILE
echo "Resultaat: Nginx configuratie bevat syntax errors" >> $LOG_FILE
fi
echo "----------------------------------------------" >> $LOG_FILE
echo "" >> $LOG_FILE
# 4. Check SSH Configuratie Syntax
echo "Check: SSH Configuratie Syntax" >> $LOG_FILE
echo "Uitvoering: sudo sshd -t -f $SSHD_CONF" >> $LOG_FILE
echo "Verwacht: Geen syntax errors" >> $LOG_FILE
if sudo sshd -t -f $SSHD_CONF &>> $LOG_FILE; then
echo "Status: PASS" >> $LOG_FILE
echo "Resultaat: SSH configuratie is syntactisch correct" >> $LOG_FILE
else
echo "Status: FAIL" >> $LOG_FILE
echo "Resultaat: SSH configuratie bevat syntax errors" >> $LOG_FILE
fi
echo "----------------------------------------------" >> $LOG_FILE
echo "" >> $LOG_FILE
echo "Validatie voltooid om $(date)" >> $LOG_FILE
echo "Rapport opgeslagen in: $LOG_FILE" >> $LOG_FILE
# Toon samenvatting in terminal
echo "Configuratie validatie voltooid!"
echo "Bekijk het volledige rapport in: $LOG_FILE"
```
**Installatie en gebruik:**
1. Sla het script op als `config_validator.sh`
2. Maak het uitvoerbaar: `chmod +x config_validator.sh`
3. Voer uit met sudo rechten: `sudo ./config_validator.sh`
**Wat het script controleert:**
1. **SSH Root Login**: Verifieert dat `PermitRootLogin no` is ingesteld
2. **Firewall Poort 22**: Controleert of poort 22 gesloten is in UFW
3. **Nginx Syntax**: Test de syntax van de Nginx configuratie
4. **SSH Syntax**: Test de syntax van de SSH configuratie
**Opmerkingen:**
- Het script vereist sudo rechten voor bepaalde checks
- UFW wordt gebruikt voor firewall checks (zorg dat het geïnstalleerd is)
- Het rapport wordt weggeschreven naar `/var/log/config_validation_report.txt`
U kunt het script uitbreiden met extra validatieregels naar behoefte.