¿Cómo iniciar un comando en la conexión / desconexión de red?

59

Tengo una conexión wifi que requiere autenticar usando un formulario web una vez que se establece el enlace inalámbrico. Sé cómo automatizar la autenticación con un script que usa curl/ curlIE .

Pero, ¿cómo puedo pedirle a Windows que llame a mi script cada vez que me conecto a una conexión de red en particular?

También estaría interesado en recibir el nombre del perfil inalámbrico o el ESSID en la línea de comandos de mi script.

dolmen
fuente
1
Probablemente inútil pero encontré esto a través de googlear. Aparentemente enumera sus conexiones y puede proporcionar algo que puede consultar con un script para determinar cuándo se conecta / desconecta un adaptador. msdn.microsoft.com/en-us/library/ms739931%28v=VS.85%29.aspx
CreeDorofl
No quiero tener que verificar el estado cada pocos segundos. Las notificaciones de reconocimiento de ubicación de red son interesantes, pero no veo una manera fácil de usarlo solo con secuencias de comandos.
dolmen
dolmen: ¿hay alguna manera de publicar también el script que escribió para la autenticación? Esta pregunta sería mucho más completa con ella.
quest49
@ quest49 Entiendo que mi script puede interesarle, pero es irrelevante para la pregunta.
dolmen
¿Alguna vez recibió una respuesta a esto que satisfizo su pregunta?
Menasheh

Respuestas:

80

En Windows Vista y versiones posteriores, puede hacerlo utilizando una tarea programada con un desencadenador de registro de eventos. El primer evento se activará al conectarse a la red, y usted especificará a qué red debe estar conectado para que se ejecute. El segundo evento se activará cuando se desconecte de cualquier red. Cada evento ejecutará una tarea específica que usted especifique; probablemente los guiones que mencionaste haber escrito.

Configurar un evento para cuando te conectas a la red:

  1. Abra el programador de tareas. Puede encontrarlo escribiendo Task Scheduleren el cuadro de búsqueda del menú de inicio o debajo Programs | Accessories | System Tools.
  2. En la biblioteca del Programador de tareas, cree una nueva tarea haciendo clic Create Tasken el panel Acciones en el lado derecho.

    agregar tarea

  3. Asigne a la tarea un nombre como "detectar conexión de red" o lo que elija

  4. En la Triggerspestaña, haga clic New...y seleccione On an Eventen el cuadro desplegable.

    gatillo desplegable

  5. Elija la siguiente configuración:

    • Iniciar sesión: Microsoft-Windows-NetworkProfile/Operational
    • Fuente: NetworkProfile
    • ID del evento: 10000
  6. Haga clic en Aceptar, luego vaya a la Conditionspestaña.
  7. Marque la casilla Start only if the following network connection is availabley elija la red con la que desea ejecutar el script
  8. Debajo de la Actionspestaña, haga clic New...y seleccione Start a program. Ingrese la ubicación del archivo de script que desea ejecutar, luego haga clic OK.
  9. Establezca cualquier otra configuración de tarea que desee, luego haga clic en OK.

Configurar un evento para cuando te desconectes de la red:

  1. Siga los pasos 2 a 4 anteriores
  2. Utilice la siguiente configuración de activación de eventos:
    • Iniciar sesión: Microsoft-Windows-NetworkProfile/Operational
    • Fuente: NetworkProfile
    • ID del evento: 10001
  3. Omita los pasos 6-7, ya que ya no estará conectado a ninguna red. Por lo tanto, este evento se ejecutará cada vez que se desconecte de cualquier red.
  4. Siga los pasos 8-9 nuevamente
nhinkle
fuente
1
¡Excelente! ¡Gracias por esa respuesta detallada! Esto es mucho más de lo que esperaba. Descubrí que incluso puedo usar una condición en el nombre de la conexión de red, por lo que puedo ejecutar el comando solo para un perfil de WLAN en particular.
dolmen
¿De dónde obtuvo los valores que proporcionó en el paso 5? Es posible resolverlos a través de prueba y error en el registro de eventos, pero me pregunto si hay una mejor manera de identificar un evento específico, a través de alguna documentación, por ejemplo.
Adam Millerchip
1
@AdamMillerchip Acabo de abrir el visor de eventos, desconectado / reconectado, y luego miré a mi alrededor.
nhinkle
1
Extraño, intenté esto y nada ...
Menelaos Bakopoulos
1
Para el registro, tuve que especificar como "fuente" Microsoft-Windows-NetworkProfile(W10 1709)
Joril
11

Parece que Start only if the following network connection is availableestá roto después de la actualización de aniversario de Windows 10. Utilice este disparador personalizado en su lugar:

<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>

En las redes corporativas, use el nombre del dominio en lugar del SSID. En este caso, la categoría del evento será "Dominio autenticado" y no "Privado".

krrr
fuente
Start only if the following network connection is availableparece roto de hecho. Si fijo esa opción y ejecutar la tarea en la demanda consigo este error: Task Scheduler Service is not available. Task scheduler will attempt to reconnect to it.
Federico Destefanis
¿Sigue existiendo este error en Windows 10 1803 o posterior?
krrr hace
4

Si está utilizando un Thinkpad, puede aprovechar ThinkVantage Access Connection, disponible para Windows 7, Vista y XP.

ThinkVantage Access Connection es el software del administrador de conexión de red que se entrega con ThinkPad; si no, se puede descargar desde su sitio de soporte. Cuando crea un nuevo perfil para su ubicación, hay un asistente que le pregunta si desea configurar una lista de programas para que se inicie cuando esa ubicación esté conectada. También ofrece matar el programa cuando la red está fuera.

Tenga en cuenta que el software se puede configurar para que funcione sin ningún perfil de ubicación, y ese es quizás el estado inicial; en ese caso, no hay forma de configurar una lista de programas para que se inicie cuando se conecte wifi: debe crear una conexión perfil para contener la lista.

Por mi propia experiencia, trato de evitar el uso del software: toma mucho más tiempo conectarse que sin él y, a veces, no puede establecer una nueva conexión durante el arranque (se puede solucionar mediante la reconexión manual).

El software solo funciona con el controlador WIFI provisto con el thinkpad.

Como nota al margen, este software ofrece establecer una conexión antes de que el usuario inicie sesión, como una opción cuando crea el perfil. No sé si esto es posible sin él.

Tankman 六四
fuente