Разбор через вывод - PullRequest
       7

Разбор через вывод

0 голосов
/ 22 мая 2019

Я хотел бы создать список значений виртуального IP.Может быть один или несколько виртуальных адресов, связанных с интерфейсом.(192.168.1.1,192.168.2.1,192.168.3.1)

[Switch] disp vrrp verbose interface Vlan-interface 1 | begin Virtual_IP
     Virtual IP     : 192.168.1.1
                      192.168.2.1
     Master IP      : 0.0.0.0
     VRName         :
     Follow Name 

[Switch] disp vrrp verbose interface Vlan-interface2 | begin Virtual_IP
     Virtual IP     : 192.168.3.1
     Master IP      : 0.0.0.0
     VRName         :
     Follow Name    :

Сначала я попытался разделить вывод, используя функцию .split и строку «Master» в качестве разделителя.Тогда я бы использовал первый элемент списка и снова выплевывал, используя ":" в качестве разделителя.Второй элемент списка теперь содержит:

192.168.1.1 192.168.2.1

Когда я снова делю его теперь, используя в качестве разделителя \ n, я получаю три элемента 192.168.1.1 192.168.2.1 и пустую вкладку илипробел

Возможно, я мог бы перебрать этот последний список и "удалить" пустые места, новые строки и вкладки.

Это хороший подход, есть ли лучший способ получить те же результаты?

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Я решил это, используя другой подход.Сначала захватывая весь вывод команды, не передавая его на само устройство.

output = connection.send_command('display vrrp verbose interface vlan-interface1')

Затем, используя splitlines () с диапазоном, я извлек "интересные" строки.

lines = output.splitlines()[10:-3]

Затем онбыло дело разбить каждую строку на слова и проверить их содержимое, было две возможности для совпадения, либо было только одно слово:

words = line.split()

    if len(words) == 1:
        #If only single word is returned then it is a VIP
        print('Words is equal to 1')
        vip = words[0]
        vips.append(vip)

, либо еще больше со вторым элементом, содержащим строку 'IP '

 elif words[1] == 'IP':
    #If multiple words are returned the 2nd will contain
    #IP vs MAC string
    print('Words Item 2 is qual to IP')
    vip = words[-1]
    vips.append(vip)

В результате список vips будет содержать все VIP, один или несколько.

0 голосов
/ 22 мая 2019

этот скрипт работает на работу.в этом примере текст находится в тестовом файле:

ip=$(grep '192.168' ./test | tr -d "Virtual IP\:")
echo $ip
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...