2017-02-02 1 views
0

Я новичок в TCL и Expect.I пытался извлечь ip-адрес определенного интерфейса, используя имя интерфейса.извлечение ip-адреса из sh ip int brief с использованием имени интерфейса в tcl

образец ввода:

Interface     IP-Address  OK? Method Status    Protocol 
Embedded-Service-Engine0/0 unassigned  YES NVRAM administratively down down  
GigabitEthernet0/0   unassigned  YES NVRAM up     up  
GigabitEthernet0/0.10  10.1.1.1  YES NVRAM up     up  
GigabitEthernet0/0.20  20.1.1.2  YES NVRAM up     up  
GigabitEthernet0/1   192.168.2.1 YES NVRAM up     up  
GigabitEthernet0/2   192.168.1.1 YES NVRAM up     up 

Я попробовал это,

regexp -line^$interfacename.*?(?=(?:\\..*?)?\\d{1,}) $temp 

, но его не дает мне какие-либо ответы .... Может кто-нибудь помочь мне в этом.

ответ

1

Вы пытаетесь извлечь IP-адрес? Например, для «GigabitEthernet/1» вы хотите 192.168.2.1, правильно?

Если да:

% set interfacename GigabitEthernet0/1 
GigabitEthernet0/1 
% set re "^$interfacename\\s+(\[\\d.]+)" 
^GigabitEthernet0/1\s+([\d.]+) 
% regexp -inline -line $re $input 
{GigabitEthernet0/1   192.168.2.1} 192.168.2.1 
% regexp -line $re $input -> ip 
1 
% set ip 
192.168.2.1 

Вам не нужен предпросмотр здесь. Кроме того, вам не требуется пробел после символа ^.

+0

благодарит Гленна за его работу .... –