test_squid.sh

Note de lecture générée automatiquement

Le vrai fichier est scripts/securite/test_squid.sh (Obsidian n’affiche pas les scripts eux-mêmes). Ne modifie pas cette note : modifie le script, puis relance python3 generer_vues_obsidian.py dans le dossier scripts.

Code

#!/usr/bin/env bash
# =============================================================================
# test_squid.sh — Envoie N requêtes vers des sites au hasard à travers le proxy
#                 Squid, pour remplir /var/log/squid/access.log et tester le cache
#                 ou la liste noire. (Inspiré du script du cours Proxy Squid.)
#
# Usage   : ./test_squid.sh [adresse_proxy:port] [nombre_de_requetes]
# Exemple : ./test_squid.sh 192.168.56.10:3128 50
# Sur le proxy, en parallèle : sudo tail -f /var/log/squid/access.log
# =============================================================================
set -uo pipefail
 
proxy="${1:-127.0.0.1:3128}"
nombre_requetes="${2:-30}"
 
sites=(
  "http://neverssl.com" "http://example.com" "https://www.debian.org"
  "https://www.wikipedia.org" "https://www.github.com" "https://www.lemonde.fr"
  "https://www.ouest-france.fr" "https://www.service-public.fr" "https://www.cnil.fr"
  "https://cyber.gouv.fr" "https://www.kernel.org" "https://archlinux.org"
  "https://www.python.org" "https://www.mozilla.org" "https://www.netacad.com"
  "https://www.facebook.com" "https://www.youtube.com" "https://www.twitch.tv"
)
total_sites=${#sites[@]}
 
echo "Proxy utilisé : $proxy — $nombre_requetes requêtes"
for ((i = 1; i <= nombre_requetes; i++)); do
  site_choisi=${sites[$RANDOM % total_sites]}
  # -x : passe par le proxy ; -w : affiche le code HTTP obtenu
  curl -x "http://$proxy" -s -o /dev/null --max-time 10 \
       -w "%{http_code}  %{url_effective}\n" "$site_choisi" &
done
wait
echo "Test terminé."
echo "Codes : 200/301 = OK, 403 = bloqué par une ACL Squid, 000 = délai dépassé ou HTTPS bloqué."