Comment lancer une commande sur connexion / déconnexion réseau?

59

J'ai une connexion wifi qui nécessite une authentification à l'aide d'un formulaire Web une fois la liaison sans fil établie. Je sais comment automatiser l'authentification avec un script utilisant curl/ curlIE .

Mais comment puis-je demander à Windows d'appeler mon script chaque fois que je me connecte à une connexion réseau particulière?

Je souhaiterais également recevoir le nom du profil sans fil ou l'ESSID sur la ligne de commande de mon script.

dolmen
la source
1
Probablement inutile mais j'ai trouvé cela grâce à googler. Apparemment, il énumère vos connexions et peut fournir quelque chose que vous pouvez interroger avec un script pour déterminer le moment où un adaptateur se connecte / déconnecte. msdn.microsoft.com/en-us/library/ms739931%28v=VS.85%29.aspx
CreeDorofl
Je ne veux pas avoir à vérifier l'état toutes les quelques secondes. Les notifications de détection d'emplacement réseau sont intéressantes, mais je ne vois pas de moyen facile de les utiliser uniquement avec des scripts.
dolmen
dolmen - existe-t-il un moyen de publier également le script que vous avez écrit pour l'authentification? cette question serait beaucoup plus complète avec elle.
quest49
@ quest49 Je comprends que mon script peut vous intéresser, mais cela n'a rien à voir avec la question.
dolmen
Avez-vous déjà eu une réponse à cette question qui satisfaisait votre question?
Menasheh

Réponses:

80

Dans Windows Vista et les versions ultérieures, vous pouvez utiliser une tâche planifiée avec un déclencheur de journal des événements. Le premier événement sera déclenché par la connexion au réseau et vous indiquerez le réseau auquel vous devez être connecté pour pouvoir être exécuté. Le deuxième événement sera déclenché lors de la déconnexion d'un réseau. Chaque événement exécutera une tâche spécifique que vous spécifiez. les scripts que vous avez mentionnés ont probablement été écrits.

Définition d'un événement pour votre connexion au réseau:

  1. Ouvrez le planificateur de tâches. Vous pouvez le trouver en tapant Task Schedulerdans la zone de recherche du menu Démarrer ou sous Programs | Accessories | System Tools.
  2. Dans la bibliothèque du Planificateur de tâches, créez une nouvelle tâche en cliquant Create Taskdans le panneau Actions sur le côté droit.

    Ajouter une tâche

  3. Attribuez à la tâche un nom du type "détecter le réseau" ou tout autre choix.

  4. Sur l' Triggersonglet, cliquez New...et sélectionnez On an Eventdans la liste déroulante.

    déclencheur déroulant

  5. Choisissez les paramètres suivants:

    • Bûche: Microsoft-Windows-NetworkProfile/Operational
    • La source: NetworkProfile
    • ID d'événement: 10000
  6. Cliquez sur OK, puis allez dans l' Conditionsonglet.
  7. Cochez la case Start only if the following network connection is availableet choisissez le réseau avec lequel vous voulez exécuter le script
  8. Sous l' Actionsonglet, cliquez sur New...et sélectionnez Start a program. Entrez l'emplacement du fichier de script que vous souhaitez exécuter, puis cliquez sur OK.
  9. Définissez les autres paramètres de tâche que vous souhaitez, puis cliquez sur OK.

Définition d'un événement pour la déconnexion du réseau:

  1. Suivez les étapes 2 à 4 ci-dessus
  2. Utilisez les paramètres de déclencheur d'événement suivants:
    • Bûche: Microsoft-Windows-NetworkProfile/Operational
    • La source: NetworkProfile
    • ID d'événement: 10001
  3. Ignorez les étapes 6 et 7, car vous ne serez plus connecté à aucun réseau. Cet événement sera donc exécuté chaque fois que vous vous déconnectez de n'importe quel réseau.
  4. Suivez à nouveau les étapes 8 à 9
ne pas penser
la source
1
Génial! Merci pour cette réponse détaillée! C'est beaucoup plus que ce à quoi je m'attendais. J'ai découvert que je pouvais même utiliser une condition sur le nom de la connexion réseau. Je ne pouvais donc exécuter la commande que pour un profil WLAN particulier.
dolmen
Où avez-vous obtenu les valeurs que vous avez fournies à l'étape 5? Il est possible de les résoudre via des essais et des erreurs dans le journal des événements, mais je me demande s'il existe un meilleur moyen d'identifier un événement spécifique, via une documentation par exemple.
Adam Millerchip
1
@AdamMillerchip Je viens d'ouvrir l'observateur d'événements, déconnecté / reconnecté, puis j'ai regardé autour de moi.
nhinkle
1
Etrange, j'ai essayé cela et rien ....
Menelaos Bakopoulos
1
Pour mémoire, je devais spécifier comme "source" Microsoft-Windows-NetworkProfile(W10 1709)
Joril
11

Il semble que ce Start only if the following network connection is availablesoit cassé après la mise à jour anniversaire de Windows 10. Utilisez plutôt ce déclencheur personnalisé:

<QueryList>
  <Query Id="0" Path="System">
    <Select Path="Microsoft-Windows-NetworkProfile/Operational">
     *[System[(EventID=10000)]] and *[EventData[(Data[@Name="Name"]="YOUR-SSID-HERE")]]
    </Select>
  </Query>
</QueryList>

Dans les réseaux d'entreprise, utilisez le nom du domaine au lieu du SSID. Dans ce cas, la catégorie de l'événement sera "Domain Authenticated" et non "Private".

krrr
la source
Start only if the following network connection is availablesemble cassé en effet. Si je mets cette option et exécuter la tâche à la demande que je reçois cette erreur: Task Scheduler Service is not available. Task scheduler will attempt to reconnect to it.
Federico Destefanis
Ce bogue existe-t-il toujours dans Windows 10 1803 ou version ultérieure?
krrr Il y a
4

Si vous utilisez un Thinkpad, vous pouvez tirer parti de ThinkVantage Access Connection, disponible pour Windows 7, Vista et XP.

ThinkVantage Access Connection est le logiciel de gestion de connexion réseau fourni avec ThinkPad. Dans le cas contraire, il peut être téléchargé à partir de son site de support. Lorsque vous créez un nouveau profil pour votre emplacement, un assistant vous demande si vous souhaitez configurer une liste de programmes à démarrer lorsque cet emplacement est connecté. Il propose également de supprimer le programme lorsque le réseau est désactivé.

Notez que le logiciel peut être configuré pour fonctionner sans aucun profil d'emplacement, et c'est peut-être le statut initial - dans ce cas, il n'y a aucun moyen de configurer une liste de programmes à démarrer lorsque le wifi est connecté: vous devez créer une connexion profil pour contenir la liste.

Pour ma propre expérience, j’essaie d’éviter d’utiliser le logiciel - il faut beaucoup plus de temps pour se connecter que sans, et parfois, il n’est pas possible d’établir une nouvelle connexion lors du démarrage (peut être corrigé manuellement).

Le logiciel ne fonctionne qu'avec le pilote WIFI fourni avec le thinkpad.

Par ailleurs, ce logiciel propose d’établir une connexion avant que l’utilisateur ne se connecte, en option lors de la création du profil. Je ne sais pas si c'est possible sans ça.

Tankman
la source