#python-3.x #cisco #cisco-ios #ciscoconfparse
#python-3.x #cisco #cisco-ios #ciscoconfparse
Вопрос:
В следующих примерах будет использоваться эта конфигурация, которая взята из http://pennington.net/tutorial/ciscoconfparse/ccp_tutorial.html#slide3
! filename:exampleswitch.conf
!
hostname ExampleSwitch
!
interface GigabitEthernet 1/1
switchport mode trunk
shutdown
!
interface GigabitEthernet 1/2
switchport mode access
switchport access vlan 20
switchport nonegotiate
no cdp enable
!
interface GigabitEthernet 1/3
no switchport
ip address 192.0.2.1 255.255.255.0
Это код, который также взят из http://pennington.net/tutorial/ciscoconfparse/ccp_tutorial.html#slide7
from ciscoconfparse import CiscoConfParse
parse = CiscoConfParse('exampleswitch.conf', syntax='ios')
for intf_obj in parse.find_objects_w_child('^interface', '^s shutdown'):
print("Shutdown: " intf_obj.text)
Вывод
$ python script.py
Shutdown: interface GigabitEthernet 1/1
$
Код работает просто отлично. Но вместо простого отображения Shutdown: interface GigabitEthernet 1/1
можно ли отобразить весь interface GigabitEthernet 1/1
блок в выходных данных, который:
interface GigabitEthernet 1/1
switchport mode trunk
shutdown
Ответ №1:
Я предполагаю, что вы ищете find_blocks .
find_blocks(linespec, exactmatch=False, ignore_ws=False). Найдите всех братьев и сестер, соответствующих linespec, затем найдите всех родителей этих братьев и сестер. Возвращает список строк конфигурации, отсортированных по номеру строки, наименьшему первому
Взгляните на документацию Ciscoconfparse API, которая включает пример.
Так что, я думаю, это будет выглядеть примерно так:
from ciscoconfparse import CiscoConfParse
parse = CiscoConfParse('exampleswitch.conf', syntax='ios')
for intf_obj in parse.find_blocks(r'^sshutdown'):
print(intf_obj)