Jak uruchomić polecenie połączenia / rozłączenia sieci?

59

Mam połączenie Wi-Fi, które wymaga uwierzytelnienia przy użyciu formularza internetowego po ustanowieniu łącza bezprzewodowego. Wiem, jak zautomatyzować uwierzytelnianie za pomocą skryptu używającego curl/ curlIE .

Ale jak mogę poprosić system Windows, aby wywoływał mój skrypt za każdym razem, gdy łączę się z określonym połączeniem sieciowym?

Byłbym również zainteresowany otrzymaniem nazwy profilu bezprzewodowego lub ESSID w wierszu polecenia mojego skryptu.

dolmen
źródło
1
Prawdopodobnie bezużyteczne, ale znalazłem to przez Google. Najwyraźniej wylicza twoje połączenia i może dostarczyć zapytanie do skryptu, aby określić, kiedy adapter łączy się / rozłącza. msdn.microsoft.com/en-us/library/ms739931%28v=VS.85%29.aspx
CreeDorofl
Nie chcę sprawdzać stanu co kilka sekund. Powiadomienia o rozpoznawaniu lokalizacji sieci są interesujące, ale nie widzę łatwego sposobu korzystania z nich tylko przy użyciu skryptów.
dolmen
dolmen - czy istnieje sposób na opublikowanie skryptu, który napisałeś dla uwierzytelnienia. pytanie to byłoby o wiele bardziej kompletne.
quest49
@ quest49 Rozumiem, że mój skrypt może Cię zainteresować, ale nie ma znaczenia dla pytania.
dolmen
Czy kiedykolwiek uzyskałeś odpowiedź na to pytanie, która zaspokoi twoje pytanie?
Menasheh,

Odpowiedzi:

80

W systemie Windows Vista i nowszych można to zrobić przy użyciu zaplanowanego zadania z wyzwalaczem dziennika zdarzeń. Pierwsze zdarzenie zostanie wyzwolone przez połączenie z siecią, a Ty określisz, do której sieci musisz się podłączyć, aby mogła działać. Drugie zdarzenie zostanie uruchomione po odłączeniu od dowolnej sieci. Każde zdarzenie uruchomi określone zadanie; prawdopodobnie napisane przez ciebie skrypty.

Ustawienie zdarzenia podczas łączenia się z siecią:

  1. Otwórz Harmonogram zadań. Możesz go znaleźć, wpisując Task Schedulerw polu wyszukiwania menu Start lub pod Programs | Accessories | System Tools.
  2. W bibliotece Harmonogramu zadań utwórz nowe zadanie, klikając Create Taskpanel Operacje po prawej stronie.

    Dodaj zadanie

  3. Nadaj temu zadaniu nazwę „wykrywaj połączenie sieciowe” lub cokolwiek innego

  4. Na Triggerskarcie kliknij New...i wybierz On an Eventz menu rozwijanego.

    spust rozwijany

  5. Wybierz następujące ustawienia:

    • Log: Microsoft-Windows-NetworkProfile/Operational
    • Źródło: NetworkProfile
    • Identyfikator zdarzenia: 10000
  6. Kliknij OK, a następnie przejdź do Conditionszakładki.
  7. Zaznacz pole Start only if the following network connection is availablei wybierz sieć, z którą chcesz uruchomić skrypt
  8. Na Actionskarcie kliknij New...i wybierz Start a program. Wprowadź lokalizację pliku skryptu, który chcesz uruchomić, a następnie kliknij OK.
  9. Ustaw inne ustawienia zadania, które chcesz, a następnie kliknij OK.

Ustawienie zdarzenia po rozłączeniu z siecią:

  1. Wykonaj kroki 2–4 powyżej
  2. Użyj następujących ustawień wyzwalacza zdarzenia:
    • Log: Microsoft-Windows-NetworkProfile/Operational
    • Źródło: NetworkProfile
    • Identyfikator zdarzenia: 10001
  3. Pomiń kroki 6-7, ponieważ nie będziesz już przyłączony do żadnej sieci. To wydarzenie będzie zatem działać za każdym razem, gdy rozłączysz się z dowolną siecią.
  4. Wykonaj ponownie kroki 8–9
nhinkle
źródło
1
Wspaniały! Dziękuję za tę szczegółową odpowiedź! To znacznie więcej niż się spodziewałem. Dowiedziałem się, że mogę użyć warunku na nazwie połączenia sieciowego, więc mogę uruchomić polecenie tylko dla określonego profilu WLAN.
dolmen
Skąd masz wartości, które podałeś w kroku 5? Możliwe jest ich wypracowanie metodą prób i błędów w dzienniku zdarzeń, ale zastanawiam się, czy istnieje lepszy sposób zidentyfikowania określonego zdarzenia, na przykład za pomocą dokumentacji.
Adam Millerchip,
1
@AdamMillerchip Właśnie otworzyłem przeglądarkę zdarzeń, rozłączyłem / ponownie połączyłem, a potem rozejrzałem się.
nhinkle
1
Dziwne, próbowałem tego i nic ....
Menelaos Bakopoulos
1
Dla Microsoft-Windows-NetworkProfile
przypomnienia
11

Wygląda na Start only if the following network connection is availableto, że jest zepsuty po rocznicowej aktualizacji systemu Windows 10. Zamiast tego użyj tego niestandardowego wyzwalacza:

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

W sieciach korporacyjnych używaj nazwy domeny zamiast SSID. W takim przypadku kategorią wydarzenia będzie „Uwierzytelniony w domenie”, a nie „Prywatny”.

krrr
źródło
Start only if the following network connection is availablewydaje się rzeczywiście zepsuty. Jeżeli ustawić tę opcję i uruchomić zadanie na żądanie dostaję ten błąd: Task Scheduler Service is not available. Task scheduler will attempt to reconnect to it.
Federico Destefanis
4

Jeśli używasz Thinkpada, możesz skorzystać z ThinkVantage Access Connection, dostępnego dla systemów Windows 7, Vista i XP.

ThinkVantage Access Connection to oprogramowanie do zarządzania połączeniami sieciowymi dostarczane z ThinkPad - jeśli nie, można je pobrać ze strony pomocy technicznej. Kiedy tworzysz nowy profil dla swojej lokalizacji, pojawia się kreator, który pyta, czy chcesz skonfigurować listę programów, aby uruchamiał się po połączeniu tej lokalizacji . Oferuje zabicie programu, gdy sieć jest niedostępna.

Należy pamiętać, że oprogramowanie można skonfigurować tak, aby działało bez żadnego profilu lokalizacji, i może to jest stan początkowy - w takim przypadku nie ma możliwości skonfigurowania listy programów, która ma się uruchamiać po podłączeniu Wi-Fi: musisz utworzyć połączenie profil zawierający listę.

Z własnego doświadczenia staram się unikać korzystania z oprogramowania - połączenie zajmuje dużo więcej czasu niż bez niego, a czasem nie udaje się nawiązać nowego połączenia podczas uruchamiania (można to naprawić przez ręczne ponowne połączenie).

Oprogramowanie działa tylko ze sterownikiem WIFI dostarczonym z thinkpad.

Na marginesie, to oprogramowanie oferuje ustanowienie połączenia przed zalogowaniem się użytkownika, jako opcja podczas tworzenia profilu. Nie wiem, czy jest to możliwe bez tego.

Tankman 六四
źródło