Как запустить команду на сетевое подключение / отключение?

55907
dolmen

У меня есть подключение к Wi-Fi, которое требует проверки подлинности с помощью веб-формы после установления беспроводной связи. Я знаю, как автоматизировать аутентификацию с помощью скрипта, который использует curl/ curlIE .

Но как я могу попросить Windows вызывать мой скрипт каждый раз, когда я подключаюсь к определенному сетевому соединению?

Мне также было бы интересно получить имя беспроводного профиля или ESSID в командной строке моего скрипта.

55
Вероятно, бесполезно, но я нашел это через поиск в Google. Он явно перечисляет ваши соединения и может предоставить что-то, что вы можете запросить с помощью скрипта, чтобы определить, когда адаптер подключается / отключается. http://msdn.microsoft.com/en-us/library/ms739931%28v=VS.85%29.aspx CreeDorofl 13 лет назад 1
I don't want to have to check the state every few seconds. [Network Location Awareness notifications](http://msdn.microsoft.com/en-us/library/ms739957%28v=VS.85%29.aspx) is interesting, but I see no easy way to use it with only scripting. dolmen 13 лет назад 0
Дольмен - есть ли способ опубликовать сценарий, который вы написали для аутентификации тоже. этот вопрос был бы намного более полным с этим в этом. quest49 12 лет назад 0
@ quest49 Я понимаю, что мой сценарий может вас заинтересовать, но это не имеет отношения к вопросу. dolmen 11 лет назад 0
Вы когда-нибудь получали ответ на этот вопрос, который удовлетворил ваш вопрос? Menasheh 7 лет назад 0

3 ответа на вопрос

74
nhinkle

В Windows Vista и более поздних версиях вы можете сделать это, используя запланированное задание с триггером журнала событий. Первое событие будет вызвано подключением к сети, и вы укажете, к какой сети вы должны подключиться, чтобы он работал. Второе событие будет запущено при отключении от любой сети. Каждое событие будет запускать определенную задачу, которую вы укажете; скорее всего, сценарии, о которых вы упомянули

Установка события при подключении к сети:

  1. Откройте планировщик задач. Вы можете найти его, введя Task Schedulerв поле поиска меню «Пуск» или под Programs | Accessories | System Tools.
  2. В библиотеке планировщика заданий создайте новое задание, щелкнув Create Taskпанель «Действия» с правой стороны.

    add task

  3. Дайте заданию имя типа «обнаружение сетевого подключения» или что-то другое.

  4. На Triggersвкладке нажмите New...и выберите On an Eventиз выпадающего списка.

    dropdown trigger

  5. Выберите следующие настройки:

    • Журнал: Microsoft-Windows-NetworkProfile/Operational
    • Источник: NetworkProfile
    • Идентификатор события: 10000
  6. Нажмите OK, затем перейдите на Conditionsвкладку.
  7. Установите флажок Start only if the following network connection is availableи выберите сеть, с которой вы хотите запустить скрипт
  8. Под Actionsвкладкой нажмите New...и выберите Start a program. Введите местоположение файла скрипта, который вы хотите запустить, затем нажмите OK.
  9. Установите любые другие параметры задачи, которые вы хотите, затем нажмите OK.

Установка события, когда вы отключаетесь от сети:

  1. Выполните шаги 2-4 выше
  2. Используйте следующие настройки триггера событий:
    • Журнал: Microsoft-Windows-NetworkProfile/Operational
    • Источник: NetworkProfile
    • Идентификатор события: 10001
  3. Пропустите шаги 6-7, так как вы больше не будете подключены ни к одной сети. Таким образом, это событие будет работать любое время отключения от любой сети.
  4. Выполните шаги 8-9 снова
Great! Thank you for that detailled answer! This is much more than I expected. I found out I can even use a condition on the network connection name, so I can run the command only for a particular WLAN profile. dolmen 13 лет назад 1
Где вы взяли значения из того, что вы указали в шаге 5? Можно обработать их методом проб и ошибок в журнале событий, но мне интересно, есть ли лучший способ идентифицировать конкретное событие, например, с помощью некоторой документации. Adam Millerchip 10 лет назад 0
@AdamMillerchip Я просто открыл окно просмотра событий, отключил / снова подключился, а затем осмотрелся. nhinkle 10 лет назад 1
Да, похоже, так оно и должно быть. Благодарю. :-) Adam Millerchip 10 лет назад 0
Какие параметры получит мой скрипт? Можете ли вы привести пример такого сценария, который, скажем, вызывает окно сообщения с его параметрами? Или добавляет их в какой-нибудь файл? einpoklum 10 лет назад 0
Странно, я пробовал это и ничего .... Menelaos Bakopoulos 10 лет назад 0
@ maythesource.com что ты на самом деле пробовал? nhinkle 10 лет назад 0
@ nhinkle ♦ Попробовал это: http://superuser.com/questions/705305/cannot-launch-application-on-wifi-connection. Спасибо, КР! Menelaos Bakopoulos 10 лет назад 0
Для записи мне пришлось указать в качестве «источника» «Microsoft-Windows-NetworkProfile» (W10 1709) Joril 6 лет назад 0
7
krrr

Похоже, что Start only if the following network connection is availableсломался после Windows 10 юбилейное обновление. Используйте этот пользовательский триггер вместо:

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

В корпоративных сетях вместо имени SSID используется имя домена. В этом случае категория мероприятия будет «Домен Аутентифицирован», а не «Частный».

«Запускать только в том случае, если следующее сетевое соединение доступно», кажется, действительно разорвано Если я устанавливаю эту опцию и запускаю задачу по требованию, я получаю эту ошибку: `Служба планировщика заданий недоступна. Планировщик задач попытается подключиться к нему. Federico Destefanis 5 лет назад 0
4
Peer Gynt

If you happen to be using a Thinkpad, you can take advantage of ThinkVantage Access Connection, available for Windows 7, Vista and XP.

ThinkVantage Access Connection is the network connection manager software shipped with ThinkPad - if not, downloadable from their support site. When you make a new profile for your location, there is a wizard which asks if you want to configure a list of program to start when that location is connected. It offers to kill the program when the net is out, too.

Note that the software can be configured to work without any location profile at all, and that's perhaps the initial status - in that case, there is no way to configure a list of program to start when wifi is connnected: you have to create a connection profile to contain the list.

For my own experience, I try to avoid using the software - it takes a lot more time to get connected than without it, and sometimes fails to establish new connection when booting (can be fixed by manually reconnect).

The software only works with the WIFI driver provided with the thinkpad.

On a side note, this software offers to establish connection before user logs in, as an option when you create the profile. I don't know if this is possible without it.