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

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

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

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

4 ответа

Решение

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

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

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

    добавить задачу

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

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

    выпадающий триггер

  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 снова

Кажется, что 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>
Другие вопросы по тегам