Cette documentation détaille l'utilisation et la maintenance des scripts utilitaires de ProspectLab.
Les scripts sont organisés par plateforme dans le dossier scripts/ :
- Windows : Scripts PowerShell (.ps1) pour la gestion de Redis/Celery et les tests
- Linux : Scripts Bash (.sh) pour l'installation (OSINT/Pentest) et la gestion Redis/Celery/maintenance
- Google Maps : Scripts Python dans
scripts/google_maps_tools/pour l'extraction d'entreprises via l'API Google Places (exports Excel par ville/secteur)
Redis est nécessaire pour le fonctionnement de Celery, qui gère les tâches asynchrones de ProspectLab.
Avantages :
- Installation simple
- Isolation des dépendances
- Facile à démarrer/arrêter
Scripts :
scripts/windows/start-redis.ps1: Démarre Redis dans Dockerscripts/windows/stop-redis.ps1: Arrête Redis
Prérequis :
- Docker Desktop installé et démarré
Utilisation :
# Démarrer Redis
.\scripts\windows\start-redis.ps1
# Arrêter Redis
.\scripts\windows\stop-redis.ps1Avantages :
- Fonctionne sans Docker
- Utilise les ressources système directement
Scripts :
scripts/windows/start-redis-wsl.ps1: Installe et démarre Redis dans WSL Ubuntuscripts/windows/stop-redis-wsl.ps1: Arrête Redis dans WSL
Prérequis :
- WSL installé avec Ubuntu
Utilisation :
# Démarrer Redis (installe automatiquement si nécessaire)
.\scripts\windows\start-redis-wsl.ps1
# Arrêter Redis
.\scripts\windows\stop-redis-wsl.ps1Le script test-wsl-tools.ps1 vérifie la disponibilité des outils OSINT et Pentest dans WSL kali-linux.
Utilisation :
.\scripts\windows\test-wsl-tools.ps1Résultat : Affiche un rapport détaillé des outils disponibles et non disponibles, organisé par catégorie (OSINT / Pentest).
scripts/linux/install_osint_tools_kali.sh: installation OSINT sous Kali (WSL ou natif)scripts/linux/install_osint_tools_bookworm.sh: installation OSINT sous Debian Bookworm / RPi
Outils installés :
- dnsrecon : Reconnaissance DNS
- theHarvester : Collecte d'informations publiques
- sublist3r : Découverte de sous-domaines
- amass : Cartographie de surface d'attaque
- whatweb : Identification de technologies web
- sslscan : Analyse SSL/TLS
- sherlock : Recherche de comptes sociaux
- maigret : Recherche OSINT avancée
Utilisation (Kali WSL) :
wsl -d kali-linux
sudo bash scripts/linux/install_osint_tools_kali.shUtilisation (Debian/RPi) :
bash scripts/linux/install_osint_tools_bookworm.shscripts/linux/install_pentest_tools_kali.sh: installation Pentest sous Kali (WSL ou natif)scripts/linux/install_pentest_tools_bookworm.sh: installation Pentest sous Debian Bookworm / RPi
Outils installés :
- sqlmap : Détection d'injections SQL
- wpscan : Scan de sécurité WordPress
- nikto : Scanner de vulnérabilités web
- wapiti : Scanner de sécurité web
- nmap : Scanner de ports et services
- sslscan : Analyse SSL/TLS
Avertissement légal : Ces outils sont destinés uniquement à des tests autorisés. Utilisez-les uniquement sur des systèmes pour lesquels vous avez une autorisation écrite explicite.
Utilisation (Kali WSL) :
wsl -d kali-linux
sudo bash scripts/linux/install_pentest_tools_kali.shUtilisation (Debian/RPi) :
bash scripts/linux/install_pentest_tools_bookworm.shDurée indicative : 10-20 minutes selon la connexion et la machine.
scripts/linux/start-redis.sh/stop-redis.sh: via systemdscripts/linux/start-redis-wsl.sh/stop-redis-wsl.sh: fallback daemonize (si pas de systemd)scripts/linux/start-celery.sh: worker + beat viarun_celery.pyscripts/linux/start-celery-beat.sh: beat seulscripts/linux/stop-celery.sh: stoppe worker/beat (pkill)scripts/linux/check-celery.sh:celery -A celery_app status
scripts/linux/clear-logs.sh: supprimelogs/*.logscripts/linux/clear-db.sh: supprimeprospectlab.dbscripts/linux/clear-redis.sh:redis-cli FLUSHALLscripts/linux/clear-all.sh: enchaîne logs + DB + Redis
Script Python pour vider la base de données SQLite, soit complètement, soit certaines tables spécifiques.
Emplacement : scripts/clear_db.py
Utilisation :
# Afficher les statistiques de la base de données
python scripts/clear_db.py
# Vider toutes les tables (avec confirmation)
python scripts/clear_db.py --clear
# Vider toutes les tables (sans confirmation)
python scripts/clear_db.py --clear --no-confirm
# Vider uniquement certaines tables
python scripts/clear_db.py --clear --tables entreprises analysesAvec PowerShell (wrapper) :
.\scripts\windows\clear-db.ps1 -Clear
.\scripts\windows\clear-db.ps1 -Clear -NoConfirmNote : Le script PowerShell active automatiquement l'environnement conda prospectlab et exécute le script Python directement.
Vide uniquement les tables du graphe externe (external_domains, entreprise_external_links, external_link_pages et tables filles associées). N’affecte pas les fiches entreprises ni les scrapers.
Emplacement : scripts/clear_external_graph.py
python scripts/clear_external_graph.pyScript Python pour vider toutes les données Celery dans Redis (broker et backend).
Emplacement : scripts/clear_redis.py
Prérequis :
- Redis démarré
- Environnement conda prospectlab activé
Utilisation :
python scripts/clear_redis.pyAvec PowerShell (wrapper) :
.\scripts\windows\clear-redis.ps1Avertissement : Cette opération supprime toutes les tâches en attente et les résultats en cache dans Redis.
Récupère des bounces depuis une boite IMAP et marque les destinataires en bounced dans emails_envoyes.
Emplacement : scripts/fetch_bounces_imap.py
Import simple a partir d'un fichier (txt/eml/mbox). Utile pour rattraper un lot de NDR.
Emplacement : scripts/import_bounces.py
Recalcule les entreprises qui doivent passer en statut Bounce selon la regle stricte:
une entreprise passe Bounce seulement si toutes ses adresses deja utilisees en campagne ont bouncé.
Emplacement : scripts/recalculate_bounce_statuses.py
Utilisation :
# Dry-run
python .\scripts\recalculate_bounce_statuses.py
# Appliquer
python .\scripts\recalculate_bounce_statuses.py --apply
# Appliquer + repasser les faux Bounce en À qualifier
python .\scripts\recalculate_bounce_statuses.py --apply --reset-non-qualifyingTeste un envoi de message prive via la couche services/multicanal.
Emplacement : scripts/tests/test_multicanal_send.py
Utilisation :
# Test X
python scripts/tests/test_multicanal_send.py --channel x --recipient-id 123456789 --body "Bonjour, test X ProspectLab." --entreprise-id 42
# Test Meta
python scripts/tests/test_multicanal_send.py --channel meta --recipient-id <PSID> --body "Bonjour, test Meta ProspectLab." --entreprise-id 42Vérifie que toutes les tâches Celery sont correctement enregistrées.
Emplacement : scripts/tests/test_celery_tasks.py
Utilisation :
python scripts/tests/test_celery_tasks.pyRésultat : Affiche la liste de toutes les tâches enregistrées et vérifie les tâches principales (analysis, scraping, technical_analysis, email, cleanup).
Vérifie que Redis est accessible et que Celery peut s'y connecter.
Emplacement : scripts/tests/test_redis_connection.py
Prérequis :
- Redis démarré
- Environnement conda prospectlab activé
Utilisation :
python scripts/tests/test_redis_connection.pyRésultat : Affiche les informations de configuration Redis, teste la connexion et vérifie les workers Celery actifs.
Les scripts de déploiement copient le code (routes, services, tasks, templates, static, utils, scripts) vers un serveur distant et synchronisent explicitement chaque dossier pour éviter les soucis d'archives (tar sous Windows).
deploy_production.ps1(Windows) : déploiement complet. Usage :.\scripts\deploy_production.ps1 [serveur] [utilisateur](défaut : voir les paramètres en tête du script). Après le transfert principal, envoi explicite de routes, services, tasks, templates, static, utils, scripts viascp -rpour garantir leur présence sur le serveur. En fin de script, exécutescripts/clear-cache.sh(si présent sur le serveur) puis redémarre les services systemdprospectlab,prospectlab-celery,prospectlab-celerybeat.deploy_production.sh(Linux/macOS) : même logique. Usage :./scripts/deploy_production.sh [serveur] [utilisateur] [chemin_distant]. De la même façon, appellescripts/clear-cache.shpuissystemctl restart prospectlab prospectlab-celery prospectlab-celerybeatà la fin du déploiement.sync_templates_static.ps1(Windows) : envoie uniquementtemplates/etstatic/sans refaire tout le déploiement. Utile pour une mise à jour rapide du front. Usage :.\scripts\sync_templates_static.ps1 [serveur] [utilisateur].
Le dossier scripts/ est inclus dans le déploiement ; les permissions d'exécution des .sh sont appliquées côté serveur après transfert.
scripts/linux/fix_env_crlf.sh: normalise CRLF du.enven Python (évite de tronquer.fren.f).scripts/linux/repair_truncated_tracking_urls.py: répare en BDD les URLs de tracking tronquées (danielcraft.f→.fr). Voir CAMPAGNES_EMAIL.md.
Scripts d'ops pour migrer ou sauver la base (ex. node15 → node6). À lancer depuis le LAN/VPN, jamais committer les dumps (production_data/, *.dump sont ignorés).
scripts/linux/dump_prospectlab_*.sh/restore_prospectlab_*.shscripts/linux/cutover_node15_to_node6_db.sh,prep_node6_postgres_prospectlab.shscripts/linux/smoke_db_count.py
- Doc clés et file d'attente : GEMINI_AUDIT.md
scripts/linux/install_playwright_chromium.sh: Chromium Playwright côté serveur (screenshots / Vision)
Les scripts utilisent les variables de configuration depuis config.py :
WSL_DISTRO: Distribution WSL à utiliser (défaut:kali-linux)WSL_USER: Utilisateur WSL (défaut:loupix)
Ces variables peuvent être surchargées dans le fichier .env.
Problème : Erreur "Docker Desktop n'est pas démarré"
Solution :
- Démarre Docker Desktop depuis le menu Démarrer
- Attends que Docker soit complètement démarré (icône stable dans la barre des tâches)
- Relance le script
Problème : Erreur "WSL non disponible"
Solution :
- Installe WSL :
wsl --install - Installe Ubuntu :
wsl --install -d Ubuntu - Relance le script
Problème : Les outils OSINT/Pentest ne sont pas trouvés
Solutions :
- Vérifie que kali-linux est installé :
wsl --list - Installe les outils manquants avec les scripts d'installation
- Vérifie la configuration WSL dans
config.py
Problème : Erreur "Défaillance irrémédiable" avec WSL
Solutions :
- Redémarre WSL :
wsl --shutdown - Vérifie que la distribution est correctement installée
- Les scripts essaient automatiquement sans utilisateur si ça échoue avec l'utilisateur configuré
PowerShell :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserBash :
chmod +x scripts/linux/*.shLes scripts sont versionnés avec le projet. Pour mettre à jour :
- Récupère la dernière version depuis le dépôt
- Relance les scripts d'installation si nécessaire
Pour vérifier l'état de Redis :
# Docker
docker ps --filter "name=prospectlab-redis"
# WSL
wsl -d Ubuntu -e bash -c "sudo service redis-server status"Pour tester les outils :
.\scripts\windows\test-wsl-tools.ps1Les scripts PowerShell utilisent :
docker-composepour la gestion Dockerwslpour l'interaction avec WSL- Gestion d'erreurs avec try/catch
- Messages colorés pour une meilleure UX
Les scripts Bash :
- Vérifient l'environnement (Kali Linux)
- Installent les dépendances via
apt-get - Gèrent les erreurs et affichent des messages clairs
- Supportent l'interruption (Ctrl+C)
Pour ajouter un nouveau script :
- Place-le dans le bon dossier (
windows/oulinux/) - Ajoute la documentation dans ce fichier
- Teste-le sur un environnement propre
- Mets à jour le README principal dans
scripts/README.md