Como iniciar um comando na conexão / desconexão de rede?

59

Eu tenho uma conexão Wi-Fi que exige a autenticação usando um formulário da Web assim que o link sem fio for estabelecido. Eu sei como automatizar a autenticação com um script que usa curl/ curlIE .

Mas como posso solicitar ao Windows que chame meu script toda vez que me conectar a uma conexão de rede específica?

Também estaria interessado em receber o nome do perfil sem fio ou o ESSID na linha de comando do meu script.

dolmen
fonte
11
Provavelmente inútil, mas eu achei isso através do Google. Aparentemente, enumera suas conexões e pode fornecer algo que você pode consultar com um script para determinar quando um adaptador se conecta / desconecta. msdn.microsoft.com/en-us/library/ms739931%28v=VS.85%29.aspx
CreeDorofl
Não quero verificar o estado a cada poucos segundos. As notificações de reconhecimento de local de rede são interessantes, mas não vejo uma maneira fácil de usá-lo apenas com scripts.
Dolmen
dolmen - existe uma maneira de postar também o script que você escreveu para a autenticação. essa pergunta seria muito mais completa com ela.
quest49
@ quest49 Entendo que meu script pode lhe interessar, mas é irrelevante para a pergunta.
Dolmen
Você já recebeu uma resposta para isso que satisfez sua pergunta?
Menasheh

Respostas:

80

No Windows Vista e versões posteriores, você pode fazer isso usando uma tarefa agendada com um acionador de log de eventos. O primeiro evento será acionado conectando-se à rede e você especificará a qual rede você deve estar conectado para que ela seja executada. O segundo evento será acionado ao se desconectar de qualquer rede. Cada evento executará uma tarefa específica que você especificar; provavelmente os scripts que você mencionou ter escrito.

Configurando um evento para quando você se conectar à rede:

  1. Abra o Agendador de tarefas. Você pode encontrá-lo digitando Task Schedulerna caixa de pesquisa do menu Iniciar ou em Programs | Accessories | System Tools.
  2. Na biblioteca do Agendador de tarefas, crie uma nova tarefa clicando Create Taskno painel Ações, no lado direito.

    adicionar tarefa

  3. Atribua à tarefa um nome como "detectar conexão de rede" ou o que você escolher

  4. Na Triggersguia, clique New...e selecione On an Eventna caixa suspensa.

    gatilho suspenso

  5. Escolha as seguintes configurações:

    • Registro: Microsoft-Windows-NetworkProfile/Operational
    • Fonte: NetworkProfile
    • ID do evento: 10000
  6. Clique em OK e vá para a Conditionsguia.
  7. Marque a caixa Start only if the following network connection is availablee escolha a rede com a qual deseja executar o script
  8. Na Actionsguia, clique New...e selecione Start a program. Digite o local do arquivo de script que você deseja executar e clique em OK.
  9. Defina quaisquer outras configurações de tarefa que você deseja e clique em OK.

Configurando um evento para quando você se desconectar da rede:

  1. Siga as etapas 2 a 4 acima
  2. Use as seguintes configurações do acionador de eventos:
    • Registro: Microsoft-Windows-NetworkProfile/Operational
    • Fonte: NetworkProfile
    • ID do evento: 10001
  3. Pule as etapas de 6 a 7, pois você não será mais conectado a nenhuma rede. Este evento será, portanto, executar qualquer vez que você desligar a partir de qualquer rede.
  4. Siga as etapas 8 a 9 novamente
nhinkle
fonte
11
Ótimo! Obrigado por essa resposta detalhada! Isso é muito mais do que eu esperava. Descobri que posso usar uma condição no nome da conexão de rede, para poder executar o comando apenas para um perfil WLAN específico.
Dolmen
Onde você obteve os valores fornecidos na etapa 5? É possível resolvê-los por tentativa e erro no log de eventos, mas estou me perguntando se existe uma maneira melhor de identificar um evento específico, através de alguma documentação, por exemplo.
Adam Millerchip
11
@AdamMillerchip Acabei de abrir o visualizador de eventos, desconectado / reconectado e, em seguida, olhei em volta.
Nhinkle
11
Estranho, eu tentei isso e nada ....
Menelau Bakopoulos
11
Para o registro, eu tive que especificar como "fonte" Microsoft-Windows-NetworkProfile(W10 1709)
Joril
11

Parece que Start only if the following network connection is availableestá quebrado após a atualização do aniversário do Windows 10. Use este gatilho personalizado:

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

Nas redes corporativas, use o nome do domínio em vez do SSID. Nesse caso, a categoria do evento será "Domínio Autenticado" e não "Privado".

krrr
fonte
Start only if the following network connection is availableparece quebrado de fato. Se eu definir essa opção e executar a tarefa sob demanda eu recebo este erro: Task Scheduler Service is not available. Task scheduler will attempt to reconnect to it.
Federico Destefanis 21/11
4

Se você estiver usando um Thinkpad, poderá aproveitar o ThinkVantage Access Connection, disponível para Windows 7, Vista e XP.

O ThinkVantage Access Connection é o software gerenciador de conexões de rede enviado com o ThinkPad - se não, pode ser baixado do site de suporte. Quando você cria um novo perfil para o seu local, existe um assistente que pergunta se você deseja configurar uma lista de programas para iniciar quando esse local estiver conectado. Também oferece a possibilidade de matar o programa quando a rede estiver fora.

Observe que o software pode ser configurado para funcionar sem nenhum perfil de localização, e esse talvez seja o status inicial - nesse caso, não há como configurar uma lista de programas para iniciar quando o wifi estiver conectado: é necessário criar uma conexão perfil para conter a lista.

Para minha própria experiência, tento evitar o uso do software - leva muito mais tempo para conectar-se do que sem ele, e às vezes falha em estabelecer uma nova conexão durante a inicialização (pode ser corrigido reconectando manualmente).

O software funciona apenas com o driver WIFI fornecido com o thinkpad.

Além disso, este software oferece o estabelecimento de conexão antes do usuário efetuar login, como uma opção ao criar o perfil. Não sei se isso é possível sem ele.

Tankman 六四
fonte