• # /etc/dhcpcd.exit-hook

    Posté par . En réponse au journal Identifier un réseau. Évalué à 8.

    Mais du coup, il faut que mon ordinateur devine sur quel réseau il est. Alors, à votre avis, comment on peut faire ça facilement ?

    J’utilise /etc/dhcpcd.exit-hook pour ça (cf. dhcpcd-run-hooks(8) pour les détails).

    Tous les réseaux auxquels je suis amené à me connecter ont un serveur DHCP, et ces serveurs envoient généralement, en même temps que l’adresse IP allouée, plus ou moins d’informations permettant la plupart du temps d’identifier assez certainement le réseau sur lequel je me trouve.

    Ça donne à peu près ça :

    if [ x$reason = xBOUND ]; then
     case "$new_domain_name" in
     ujf.grenoble.fr)
     # réseau de l’université Grenoble I
     ;;
     fleming.local)
     # réseau de l’Institut Fleming
     ;;
     ici.local)
     # un autre réseau ici
     ;;
     ailleurs.internal)
     # un autre réseau ailleurs
     ;;
     *)
     # réseau inconnu
     ;; 
     esac
    fi
    
    

    Ici, new_domain_name est le nom de domaine par défaut indiqué par le serveur DHCP. C’est je pense l’option la plus simple pour identifier le réseau auquel on vient de se connecter (malheureusement tous les serveurs DHCP ne renvoient pas nécessairement cette information — elle est optionnelle, d’après la RFC 2132, §3.17). Les autres informations possiblement utilisables, à défaut, incluent l’adresse du serveur DHCP qui vient de répondre (new_dhcp_server_identifier), l’adresse des serveurs DNS (new_domain_name_servers), le SSID dans le cas d’une connexion Wi-Fi (new_ssid), la passerelle (new_routers), etc...