Дополнен/изменён вывод в терминал.

This commit is contained in:
2025-12-05 01:01:17 +10:00
parent ddb21076a0
commit 157f334874

View File

@@ -18,7 +18,7 @@ ipv4_find_str=re.compile(r"(?<![0-9.])(?!10\.|172\.(?:1[6-9]|2[0-9]|3[01])\.|192
ipv6_find_str=re.compile(r'(?<![0-9A-Fa-f:])([23][0-9A-Fa-f]{3}(?:(?::[0-9A-Fa-f]{1,4}){0,6}|(?:::[0-9A-Fa-f]{0,4})?)(?::[0-9A-Fa-f]{0,4})*)(?:/([1-9][0-9]?|1[01][0-9]|12[0-8]))?(?![0-9A-Fa-f:])')
# метод вывода прогресса на экран
def progres_print(lstr:list, mtype:int=0, ss:float=0.1):
def progres_print(lstr:list, mtype:int=0, ss:float=0.3):
"""
Метод вывода на экран прогресса выполнения
"""
@@ -333,7 +333,7 @@ if __name__ == "__main__":
bgp_community=" ".join([f"bgp_community.add(({str(c).replace(':',',')}));" for c in sorted(v[0])])
with open(ipv4_bird2_m4, "a") as file:
file.write(f"protocol static static_{k.lower()}_v4 {{\n\tipv4 {{ import filter {{ {bgp_community} preference=400; accept; }}; }};\n\tinclude \"{ipv4_out_file}\";\n}}\n")
progres_print([ipv4_bird2_m4, f"добавлен {k}"])
progres_print([f"В {ipv4_bird2_m4}", f"добавлен {k}"])
# обновляем временный файл конфигурации ipv6
# из группировок
@@ -349,7 +349,7 @@ if __name__ == "__main__":
bgp_community=" ".join([f"bgp_community.add(({str(c).replace(':',',')}));" for c in sorted(v[0])])
with open(ipv6_bird2_m4, "a") as file:
file.write(f"protocol static static_{k.lower()}_v6 {{\n\tipv6 {{ import filter {{ {bgp_community} preference=400; accept; }}; }};\n\tinclude \"{ipv6_out_file}\";\n}}\n")
progres_print([ipv6_bird2_m4, f"добавлен {k}"])
progres_print([f"В {ipv6_bird2_m4}", f"добавлен {k}"])
# дополняем временный файл конфигурации всей выгрузкой ipv4 и ipv6
for clist, value in ip_list.items():
@@ -370,7 +370,7 @@ if __name__ == "__main__":
with open(ipv4_bird2_m4, "a") as file:
bgp_filter=f"if net ~ [{','.join(ip_addresses_filter)}] then reject; " if ip_addresses_filter else ''
file.write(f"protocol static static_{clist.lower()}_v4 {{\n\tipv4 {{ import filter {{ {bgp_filter}{bgp_community} accept; }}; }};\n\tinclude \"{ipv4_out_file}\";\n}}\n")
progres_print([ipv4_bird2_m4, f"добавлен {clist}"])
progres_print([f"В {ipv4_bird2_m4}", f"добавлен {clist}"])
if os.path.exists(ipv6_out_file):
# фильтер маршрутов ipv6, если список ignore существует в конфигурации
ip_addresses_filter=set()
@@ -383,18 +383,24 @@ if __name__ == "__main__":
with open(ipv6_bird2_m4, "a") as file:
bgp_filter=f"if net ~ [{','.join(ip_addresses_filter)}] then reject; " if ip_addresses_filter else ''
file.write(f"protocol static static_{clist.lower()}_v6 {{\n\tipv6 {{ import filter {{ {bgp_filter}{bgp_community} accept; }}; }};\n\tinclude \"{ipv6_out_file}\";\n}}\n")
progres_print([ipv6_bird2_m4, f"добавлен {clist}"])
progres_print([f"В {ipv6_bird2_m4}", f"добавлен {clist}"])
print("\n")
# проверяем, что временный файл конфигурации ipv4 не пустой, сохраняем в постоянный
if os.path.exists(ipv4_bird2_m4) and os.path.getsize(ipv4_bird2_m4) != 0:
os.replace(ipv4_bird2_m4, ipv4_bird2_m4.removesuffix(".tmp"))
os.system("systemctl reload bird.service >/dev/null 2>&1 || \
systemctl restart bird.service >/dev/null 2>&1 && \
echo '\\e[32mНовый файл конфигурации ipv4 применён\\e[0m' || echo '\\e[31mBird2 error...\\e[0m'")
# проверяем, что временный файл конфигурации ipv6 не пустой, сохраняем в постоянный
if os.path.exists(ipv6_bird2_m4) and os.path.getsize(ipv6_bird2_m4) != 0:
os.replace(ipv6_bird2_m4, ipv6_bird2_m4.removesuffix(".tmp"))
os.replace(ipv6_bird2_m4, config_ipv6:=ipv6_bird2_m4.removesuffix(".tmp"))
progres_print([f"Конфиг {ipv6_bird2_m4}", f"перемещён в {os.path.basename(config_ipv6)}"])
else:
progres_print([f"Конфиг {ipv6_bird2_m4}", f"отсутствует/пуст"], 1)
# проверяем, что временный файл конфигурации ipv4 не пустой, сохраняем в постоянный
if os.path.exists(ipv4_bird2_m4) and os.path.getsize(ipv4_bird2_m4) != 0:
os.replace(ipv4_bird2_m4, config_ipv4:=ipv4_bird2_m4.removesuffix(".tmp"))
progres_print([f"Конфиг {ipv4_bird2_m4}", f"перемещён в {os.path.basename(config_ipv4)}"])
else:
progres_print([f"Конфиг {ipv4_bird2_m4}", f"отсутствует/пуст"], 1)
print("\n")
# реконфигурирование Bird2
os.system("systemctl reload bird.service >/dev/null 2>&1 || \
systemctl restart bird.service >/dev/null 2>&1 && \
echo '\\e[32mНовый файл конфигурации ipv6 применён\\e[0m' || echo '\\e[31mBird2 error...\\e[0m'")
echo '\\e[32mНовый конфиг Bird2 применён\\e[0m' || echo '\\e[31mBird2 error...\\e[0m'")