понедельник, 29 сентября 2014 г.

example routes parsing with python on windows

Задача такая: при подключении к windows vpn надо выловить новое подключение и сделать через него роут на левый ip-шник
Условия: windows! vpn выдает произвольный адрес из сети 192.168.6.0/24
Доп. условие: скрипт должен удалять свое же подключение. Тут легче - ip уникальный.
В принципе, скрипт приурочен к изучению python (отличный язык, имхо)


#by alex. 2014
#-*- coding: cp1251 -*-
import codecs,sys
from os import _exit
from subprocess import check_output

outf = codecs.getwriter('cp866')(sys.stdout, errors='replace')
sys.stdout = outf

route_print=check_output("route print")
routes=route_print.split("\n")

if "192.168.20.21" in route_print:
  if "Y"==raw_input(u"Маршрут уже присутствует!\nХотите удалить?Y/N:").upper():
    check_output("route delete 192.168.20.21")
_exit(0)

resultroute=[]
for i in routes:
   if "255.255.255.255" in i and "192.168.6" in i:
     resultroute=i.split()

if len(resultroute)==0:
 raw_input(u"Не обнаружено подключение! Нажмите ввод для выхода")
 _exit(1)

try:
 check_output("route add 192.168.20.21 mask 255.255.255.255 " + resultroute[3])
except:
 raw_input(u"Маршрут не применен!\nНажмите ВВОД для выхода")
 raise

raw_input(u"Маршрут применен. Нажмите ввод для выхода")