Как запустить команду на сетевое подключение / отключение?
У меня есть Wi-Fi-соединение, которое требует аутентификации с помощью веб-формы после установления беспроводной связи. Я знаю, как автоматизировать аутентификацию с помощью скрипта, который использует curl
/ curlIE.
Но как я могу попросить Windows вызывать мой скрипт каждый раз, когда я подключаюсь к определенному сетевому соединению?
Мне также было бы интересно получить имя беспроводного профиля или ESSID в командной строке моего скрипта.
4 ответа
В Windows Vista и более поздних версиях это можно сделать с помощью запланированной задачи с триггером журнала событий. Первое событие будет вызвано подключением к сети, и вы укажете, к какой сети вы должны подключиться, чтобы он работал. Второе событие будет запущено при отключении от любой сети. Каждое событие будет запускать определенную задачу, которую вы укажете; скорее всего, сценарии, которые вы упомянули написав.
Настройка события для подключения к сети:
- Откройте планировщик задач. Вы можете найти его, набрав
Task Scheduler
в поле поиска меню "Пуск" или подPrograms | Accessories | System Tools
, В библиотеке планировщика заданий создайте новое задание, нажав
Create Task
в панели действий на правой стороне.Дайте заданию имя типа "обнаружение сетевого подключения" или что-то другое.
На
Triggers
вкладка, нажмитеNew...
и выберитеOn an Event
из выпадающего списка.Выберите следующие настройки:
- Журнал:
Microsoft-Windows-NetworkProfile/Operational
- Источник:
NetworkProfile
- Идентификатор события:
10000
- Журнал:
- Нажмите OK, затем перейдите к
Conditions
Вкладка. - Установите флажок для
Start only if the following network connection is available
и выберите сеть, с которой вы хотите запустить скрипт - Под
Actions
вкладка, нажмитеNew...
и выберитеStart a program
, Введите местоположение файла скрипта, который вы хотите запустить, затем нажмитеOK
, - Установите любые другие параметры задачи, которые вы хотите, затем нажмите
OK
,
Установка события, когда вы отключаетесь от сети:
- Выполните шаги 2-4 выше
- Используйте следующие настройки триггера событий:
- Журнал:
Microsoft-Windows-NetworkProfile/Operational
- Источник:
NetworkProfile
- Идентификатор события:
10001
- Журнал:
- Пропустите шаги 6-7, так как вы больше не будете подключены ни к одной сети. Поэтому это событие будет выполняться каждый раз, когда вы отключаетесь от сети.
- Выполните шаги 8-9 снова
Кажется, что 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 используется имя домена. В этом случае категория события будет "Домен Аутентифицирован", а не "Частный".
Если вы используете Thinkpad, вы можете воспользоваться ThinkVantage Access Connection, доступной для Windows 7, Vista и XP.
ThinkVantage Access Connection - это программное обеспечение для управления сетевыми соединениями, поставляемое с ThinkPad, в противном случае его можно загрузить с их сайта поддержки. Когда вы создаете новый профиль для своего местоположения, есть мастер, который спрашивает, хотите ли вы настроить список программ для запуска, когда это местоположение подключено. Он также предлагает убить программу, когда сеть отсутствует.
Обратите внимание, что программное обеспечение может быть настроено на работу без какого-либо профиля местоположения вообще, и это, возможно, начальный статус - в этом случае нет способа настроить список программ для запуска при подключении Wi-Fi: вам необходимо создать соединение профиль, чтобы содержать список.
Исходя из собственного опыта, я стараюсь избегать использования программного обеспечения - для подключения требуется гораздо больше времени, чем без него, и иногда не удается установить новое подключение при загрузке (это можно исправить путем повторного подключения вручную).
Программное обеспечение работает только с драйвером WIFI, поставляемым с ThinkPad.
Кроме того, это программное обеспечение предлагает установить соединение до входа пользователя в систему, как вариант при создании профиля. Я не знаю, возможно ли это без этого.
Чтобы обновить ответы от @nhinkle и @KRR: мне пришлось использовать следующий XML-запрос, поскольку Windows иногда устанавливает поле «Имя» примерно так: «SSID_5G 2» для SSID «SSID_5G». Вместо этого используйте совпадения «Описание» (Windows 10, версия 20H2)
<QueryList>
<Query Id="0" Path="System">
<Select Path="Microsoft-Windows-NetworkProfile/Operational">
*[System[(EventID=10000)]] and *[EventData[(Data[@Name="Descrioption"]="SSID_5G")]]
</Select>
</Query>
</QueryList>