четверг, 18 июня 2009 г.

триггер на событие Windows (пример vpn)

как навесить запуск чего-либо на подключение:
Каждое подключение генерирует в системе событие, код которого можно посмотреть, запустив "compmgmt.msc" -> Просмотр событий -> Система.
Зная код, можно навесить на событие триггер командой eventtriggers, см. eventtriggers /?

Во-вторых, как выдернуть ip-адрес интерфейса в качестве переменной для bat-файла:
Тут я особо не оптимизировал, но зато точно работает:

ipconfig > ip.txt
findstr "IP-" ip.txt > ip2.txt
for /F "skip=2 tokens=2 delims=:" %%f in (ip2.txt) do route delete 0.0.0.0 mask 0.0.0.0 %%f
for /F "skip=2 tokens=2 delims=:" %%f in (ip2.txt) do route add 81.30.176.0 mask 255.255.240.0 %%f
for /F "skip=2 tokens=2 delims=:" %%f in (ip2.txt) do route add 81.30.192.0 mask 255.255.224.0 %%f
for /F "skip=2 tokens=2 delims=:" %%f in (ip2.txt) do route add 89.189.128.0 mask 255.255.224.0 %%f
for /F "skip=2 tokens=2 delims=:" %%f in (ip2.txt) do route add 77.79.128.0 mask 255.255.192.0 %%f

параметр skip=2 пропускает первые два интерфейса, которые мне не нужны, параметр delims устанавливает в качестве делителя переменных символ ":", что наиболее удобно на выходе ipconfig'а. Немного коряво, конечно, зато действует. И без всяких vbs-скриптов и сторонних приложений.

Итого: Навешиваем на коннект VPN триггер с запуском routs.bat, который сам выдергивает IP нужного нам интерфейса, и прописывает нужные маршруты.

Source: http://otvety.google.ru/otvety/thread?tid=28d9ec62b3503cb0