Afficher les Paramètres du Proxy Avant d'Exécuter des Commandes

Home PDF

prexec

Vivre en Chine ou travailler dans des entreprises qui utilisent des VPN et des proxies peut compliquer le développement de logiciels. Oublier de configurer ces paramètres entraîne souvent des problèmes de connectivité. Pour simplifier votre flux de travail, j’ai créé un simple script Zsh avec l’aide de ChatGPT qui affiche automatiquement vos paramètres de proxy lorsque vous exécutez des commandes spécifiques dépendantes du réseau.

Pourquoi afficher les paramètres du proxy ?

Les proxys et les VPN sont essentiels pour accéder de manière sécurisée à des ressources externes. Afficher vos paramètres de proxy avant d’exécuter des commandes dépendantes du réseau vous aide à identifier et à résoudre rapidement les problèmes de connectivité.

Le Script

Ce script utilise la fonction preexec de Zsh pour vérifier si la commande à venir dépend du réseau. Si c’est le cas et que les variables d’environnement du proxy sont définies, il affiche les paramètres actuels du proxy.

# Fonction pour vérifier et afficher les paramètres de proxy avant certaines commandes
preexec() {
    # Définir les commandes dépendantes du réseau
    local network_commands=(
        "gpa"
        "git"
        "ssh"
        "scp"
        "sftp"
        "rsync"
        "curl"
        "wget"
        "apt"
        "yum"
        "dnf"
        "npm"
        "yarn"
        "pip"
        "pip3"
        "gem"
        "cargo"
        "docker"
        "kubectl"
        "ping"
        "traceroute"
        "netstat"
        "ss"
        "ip"
        "ifconfig"
        "dig"
        "nslookup"
        "nmap"
        "telnet"
        "ftp"
        "nc"
        "tcpdump"
        "adb"
        "bundle"
        "brew"
        "cpanm"
        "bundle exec jekyll"
        "make"
        # Ajouter plus de commandes au besoin
    )
# Extraire le premier mot (commande) de la ligne de commande
local cmd
cmd=$(echo "$1" | awk '{print $1}')

# Fonction pour afficher les variables de proxy
display_proxy() {
    echo -e "\n🚀 Paramètres de proxy détectés :"
[ -n "$HTTP_PROXY" ] && echo "   - HTTP_PROXY: $HTTP_PROXY"
[ -n "$http_proxy" ] && echo "   - http_proxy: $http_proxy"
[ -n "$HTTPS_PROXY" ] && echo "   - HTTPS_PROXY: $HTTPS_PROXY"
[ -n "$https_proxy" ] && echo "   - https_proxy: $https_proxy"
[ -n "$ALL_PROXY" ] && echo "   - ALL_PROXY: $ALL_PROXY"
[ -n "$all_proxy" ] && echo "   - all_proxy: $all_proxy"
echo ""
    # Vérifie si la commande dépend du réseau
    for network_cmd in "${network_commands[@]}"; do
        if [[ "$1" == "$network_cmd"* ]]; then
            if [ -n "$HTTP_PROXY" ] || [ -n "$http_proxy" ] || \
               [ -n "$HTTPS_PROXY" ] || [ -n "$https_proxy" ] || \
               [ -n "$ALL_PROXY" ] || [ -n "$all_proxy" ]; then
                
                display_proxy
            fi
            break
        fi
    done
}

Configuration du Script dans Zsh

1. Ouvrez votre fichier .zshrc

Utilisez votre éditeur de texte préféré pour ouvrir le fichier de configuration .zshrc. Par exemple :

nano ~/.zshrc

2. Ajouter la fonction preexec

Collez le script ci-dessus à la fin du fichier.

3. Enregistrer et fermer

Appuyez sur CTRL + O pour enregistrer et CTRL + X pour quitter.

4. Appliquer les modifications

Rechargez votre fichier .zshrc pour appliquer immédiatement la nouvelle configuration :

source ~/.zshrc

Tester la configuration

1. Avec Proxy Activé

Définissez une variable de proxy temporairement et exécutez une commande dépendante du réseau en utilisant pip :

export HTTP_PROXY="http://127.0.0.1:7890"
pip install selenium beautifulsoup4 urllib3

Sortie attendue :


🚀 Paramètres de proxy détectés :
   - HTTP_PROXY : http://127.0.0.1:7890
   - http_proxy : 127.0.0.1:7890
   - HTTPS_PROXY : 127.0.0.1:7890
   - https_proxy : 127.0.0.1:7890
   - ALL_PROXY : 127.0.0.1:7890
   - all_proxy : 127.0.0.1:7890

Collecting selenium
  Téléchargement de selenium-4.x.x-py2.py3-none-any.whl (xxx kB)
Collecting beautifulsoup4
  Téléchargement de beautifulsoup4-4.x.x-py3-none-any.whl (xxx kB)
Collecting urllib3
  Téléchargement de urllib3-1.x.x-py2.py3-none-any.whl (xxx kB)
...

2. Sans Proxy Activé

Définissez la variable de proxy et exécutez la même commande pip :

unset HTTP_PROXY
pip install selenium beautifulsoup4 urllib3

Sortie attendue :

Collecting selenium
  Téléchargement de selenium-4.x.x-py2.py3-none-any.whl (xxx kB)
Collecting beautifulsoup4
  Téléchargement de beautifulsoup4-4.x.x-py3-none-any.whl (xxx kB)
Collecting urllib3
  Téléchargement de urllib3-1.x.x-py2.py3-none-any.whl (xxx kB)
...

(Aucune notification de proxy ne devrait apparaître.)

3. Commande Non-Network

Exécutez une commande locale comme ls :

ls

Sortie attendue :

[Liste des fichiers et répertoires]

(Aucune notification de proxy ne devrait apparaître.)

Personnalisation

Ajoutez "gpa" au tableau network_commands pour déclencher des notifications de proxy lors de l’utilisation de cet alias.

Pour une meilleure visibilité, notamment dans les terminaux encombrés, vous pouvez ajouter de la couleur aux notifications du proxy :

  # Ajoutez les codes de couleur en haut de votre fichier .zshrc
  GREEN='\033[0;32m'
  NC='\033[0m' # Pas de couleur

display_proxy() { echo -e “\n${GREEN}🚀 Paramètres de proxy détectés :${NC}”

[ -n "$HTTP_PROXY" ] && echo "   - HTTP_PROXY: $HTTP_PROXY"
[ -n "$http_proxy" ] && echo "   - http_proxy: $http_proxy"
[ -n "$HTTPS_PROXY" ] && echo "   - HTTPS_PROXY: $HTTPS_PROXY"
[ -n "$https_proxy" ] && echo "   - https_proxy: $https_proxy"
[ -n "$ALL_PROXY" ] && echo "   - ALL_PROXY: $ALL_PROXY"
[ -n "$all_proxy" ] && echo "   - all_proxy: $all_proxy"
      echo ""
  }

Conclusion

La gestion des paramètres de proxy est essentielle pour un développement logiciel fluide dans des environnements réseau restreints. Ce script Zsh garantit que vous êtes toujours informé de vos configurations de proxy lors de l’exécution de commandes nécessitant un accès réseau, améliorant ainsi votre flux de travail et l’efficacité de la résolution des problèmes.

Bon Codage ! 🚀


Back 2025.01.18 Donate