Как стать автором
Обновить

Миграция thonет конвертировать файлы кон поддерживаться в 2025 году

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров557

Моя программа на Python имеет открытый исходный код. Вы можете прочитать, использовать, обновлять, добавлять свои собственные функции.
Программа преобразует структурированный текст в другой структурированный текст, и находится в стадии разработки.
Чтобы понять эту программу, вам нужно знать основные операции в Python, текст, list и diьзуются как IP адреса источника или IP адреса назначения в политиках или правилах.
Здесь мы видим объекты адресов (set address). Слева Juniper, справа те же объекты, преобразованные в PaloAlto.

Программа считывает текст конфигурации Juniper и ищет слова "set security address-book global address",
затем программа находит имя объекта и префикс объекта.

Здесь мы видим объекты группы адресов (set address-group). Слева Juniper, справа преобразованные в PaloAlto.
В Juniper address-set может состоять из нескольких объектов в нескольких строках, в PaloAlto в одной строке несколько объектов в квадратных скобках.

ю зону.

#!/usr/bin/python3
#  usage " python srx_to_pa.py fw_name "           ---- SRX convert address objects to PaloAlto

import csv, sys

each line, list of separate words from SRX config
        if (len(row) == 7):
   
# Open the input files                             ---- convert 'address-book global address-set address' 
with open(input_file, "r") as f:
    add_name , pa_str_list = '' , []                    # add_name -- name of address-set object, pa_str_list -- list containing addresses
    reader = csv.reader(f, delimiter=" ")
    for row in reader:                                  # list of separate words from SRX config
        if (len(row) == 8):
            if ((row[0] == "set") and (row[1] == "security") and (row[2] == "address-book")):
                if (("address" in row) and ("address-set" in row) and not ("description" in row)):
     
                            print(pri)
                            add_name , pa_str_list = '' , []
                        add_name   = row[(row.index('address-set')+1)]
                        ip_address = row[(row.index('address'    )+1)]
                        pa_str_list.append(ip_address)
                if ((row.count('address-set') == 2) and not ("description" in row)):
                    if add_name == row[(row.index('address-set')+1)]:
                        first = row.index('address-set')
                        sec_name = row[(row.index('address-set',(first+1))+1)]
                        pa_str_list.append(sec_name)
                    else:
                        if not add_name == '':
                            pri = 'set address-group ' + add_name + ' static '+ str(pa_str_list)
                            pri = pri.replace("'",' ')
                            pri = pri.replace(", ",'')
                            print(pri)
                            add_name , pa_str_list = '' , []
                        add_name   = row[(row.index('address-set')+1)]
                        first = row.index('address-set')
                        sec_name = row[(row.index('address-set',(first+1))+1)]
                        pa_str_list.append(sec_name)

pri = 'set address-group ' + add_name + ' static '+ str(pa_str_list)
pri = pri.replace("'",' ')
pri = pri.replace(", ",'')
print(pri)
print(' ')
    
# Open the input files                             ---- convert 'security policies global policy' to 'rulebase security rules '
with open(input_file, "r") as f:
    sec_name , pa_source_list , pa_dest_list , pa_app_list = '' , [] , [] , []
    reader = csv.reader(f, delimiter=" ")
    for row in reader:
        if (len(row) == 9):
            if ((row[0] == "set") and (row[1] == "security") and (row[2] == "policies")):
                if (("policy" in row) and not ("description" in row)):
                    if sec_name == row[(row.index('policy')+1)]:
                        if (row[(row.index('policy')+3)] == "source-address"):  
                            pa_source_list.append(row[(row.index('policy')+4)])
                        if (row[(row.index('policy')+3)] == "destination-address"):
         ules ' + sec_name + ' service application-default'
                            pri_s = 'set rulebase security rules ' + sec_name + ' source ' + str(pa_source_list)
                            pri_s = pri_s.replace("'",' ')
                            pri_s = pri_s.replace(", ",'')
                            print(pri_1)
                            print(pri_s)
                            print(pri_2)
                            pri_d = 'set rulebase security rules ' + sec_name + ' destination ' + str(pa_dest_list)
                            pri_d = pri_d.replace("'",' ')
                            pri_d = pri_d.replace(", ",'')
                            print(pri_d)
                            print(pri_3)
                            print(pri_4)
                            print(pri_5)

                            sec_name , pa_source_list , pa_dest_list , pa_app_list = '' , [] , [] , []
                        sec_name   = row[(row.index('policy')+1)]
                        if (row[(row.index('policy')+3)] == "source-address"):  
                            pa_source_list.append(row[(row.index('policy')+4)])
                        if (row[(row.index('policy')+3)] == "destination-address"):
                            pa_dest_list.append(row[(row.index('policy')+4)])
                        if (row[(row.index('policy')+3)] == "application"):
                            pa_app_list.append(row[(row.index('policy')+4)])


pri_1 = 'set rulebase security rules ' + sec_name + ' from any'                         # from any zone
pri_2 = 'set rulebase security rules ' + sec_name + ' to any'                           # to   any zone
pri_3 = 'set rulebase security rules ' + sec_name + ' application any'
pri_4 = 
pri_d = 'set rulebase security rules ' + sec_name + ' destination ' + str(pa_dest_list)
pri_d = pri_d.replace("'",' ')
pri_d = pri_d.replace(", ",'')
print(pri_d)
print(pri_3)
print(pri_4)
print(pri_5)
    
Теги:
Хабы:
Всего голосов 5: ↑5 и ↓0+7
Комментарии2

Публикации

Работа

Data Scientist
51 вакансия

Ближайшие события