Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 20, 2011 17:05:13

Phoen
От:
Зарегистрирован: 2010-04-21
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

telnetlib, выборка из вывода

Есть скрипт залезающий телнетом на циску и делающий там

tn.write(“sh pppoe session | include %s\r” %Vi)

После чего при помощи data.split() выдергивается мак адрес юзверя. Если кто не знает вывод этой команды на циске в идеальном случае выглядит приблизительно так:

>sh pppoe session | inc Vi124
83 18658 f07d.684a.0f39 Gi0/1.1025 Vt1 Vi124 PTA

Однако если Vi двузначные, то найдётся также и информация о пользователях в Vi которых есть совпадения, тоесть примерно так:

sh pppoe ses | inc Vi10
439 18770 0021.9783.d343 Gi0/1.1024 Vt1 Vi103 PTA
1380 18290 0019.2144.4719 Gi0/1.1026 Vt1 Vi100 PTA
810 18766 000f.eabf.18ca Gi0/1.1027 Vt1 Vi104 PTA
1162 18093 e0cb.4edc.82e7 Gi0/1.1028 Vt1 Vi107 PTA
545 18071 001d.7d7c.51ba Gi0/1.1028 Vt1 Vi106 PTA
460 17411 0006.4f6b.0324 Gi0/1.1030 Vt1 Vi101 PTA
437 18758 0080.483a.dd16 Gi0/1.1033 Vt1 Vi109 PTA
1309 17970 e0cb.4e5e.c7af Gi0/1.1054 Vt1 Vi10 PTA


Может у кого нибудь есть мысли касательно того как выцепить мак именно принадлежащий двузначным Vi?



Офлайн

#2 Янв. 20, 2011 17:19:27

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

telnetlib, выборка из вывода

при помощи того же data.split() выдергивать еще и Vi и сравнивать



Офлайн

#3 Янв. 20, 2011 17:24:08

Phoen
От:
Зарегистрирован: 2010-04-21
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

telnetlib, выборка из вывода

bazooka
при помощи того же data.split() выдергивать еще и Vi и сравнивать
Vi то сравнить не проблема, а вот как вытащить соответствующий конкретному двузначному Vi мак что то не придумывается. Единственная мысль - записать это всё в текстовый файл, построчно его считывать и как то отдавать строку с вхождением.



Отредактировано (Янв. 20, 2011 17:26:43)

Офлайн

#4 Янв. 20, 2011 17:33:24

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

telnetlib, выборка из вывода

а щяс оно не построчно обрабатывает?



Офлайн

#5 Янв. 20, 2011 17:38:00

Phoen
От:
Зарегистрирован: 2010-04-21
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

telnetlib, выборка из вывода

нет, когда делалось предпологалось что двузначных Vi не будет, а с трёхзначные возвращают лишь одно значение.

Значит единственный вариант писать все файл и потом тупо работать со строками?



Отредактировано (Янв. 20, 2011 17:40:09)

Офлайн

#6 Янв. 20, 2011 18:25:05

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

telnetlib, выборка из вывода

никогда небывает единственного варианта



Офлайн

#7 Янв. 20, 2011 20:24:26

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

telnetlib, выборка из вывода

# coding: utf8

data = """ 439 18770 0021.9783.d343 Gi0/1.1024 Vt1 Vi103 PTA
1380 18290 0019.2144.4719 Gi0/1.1026 Vt1 Vi100 PTA
810 18766 000f.eabf.18ca Gi0/1.1027 Vt1 Vi104 PTA
1162 18093 e0cb.4edc.82e7 Gi0/1.1028 Vt1 Vi107 PTA
545 18071 001d.7d7c.51ba Gi0/1.1028 Vt1 Vi106 PTA
460 17411 0006.4f6b.0324 Gi0/1.1030 Vt1 Vi101 PTA
437 18758 0080.483a.dd16 Gi0/1.1033 Vt1 Vi109 PTA
1309 17970 e0cb.4e5e.c7af Gi0/1.1054 Vt1 Vi10 PTA"""

for s in data.splitlines():
d = s.split()
print d[5],' = ',d[2]
Vi103  =  0021.9783.d343
Vi100 = 0019.2144.4719
Vi104 = 000f.eabf.18ca
Vi107 = e0cb.4edc.82e7
Vi106 = 001d.7d7c.51ba
Vi101 = 0006.4f6b.0324
Vi109 = 0080.483a.dd16
Vi10 = e0cb.4e5e.c7af
такое надо?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version