@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Скрипт для перезагрузки префиксов без перезапуска BGP сервера
|
||||
"""
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
def run_command(cmd):
|
||||
"""Выполнение команды"""
|
||||
try:
|
||||
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
|
||||
return result.returncode == 0, result.stdout, result.stderr
|
||||
except Exception as e:
|
||||
return False, "", str(e)
|
||||
|
||||
def reload_prefixes():
|
||||
"""Перезагрузка префиксов"""
|
||||
print("Reloading prefixes...")
|
||||
|
||||
# Остановка процесса загрузки префиксов
|
||||
print("Stopping prefix loader process...")
|
||||
success, output, error = run_command("docker exec bgp-server pkill -f load_prefixes.py")
|
||||
|
||||
if not success:
|
||||
print("Warning: Could not stop prefix loader process")
|
||||
|
||||
# Ожидание завершения процесса
|
||||
time.sleep(2)
|
||||
|
||||
# Проверка что процесс остановлен
|
||||
success, output, error = run_command("docker exec bgp-server pgrep -f load_prefixes.py")
|
||||
if success:
|
||||
print("Error: Prefix loader process is still running")
|
||||
return False
|
||||
|
||||
print("Prefix loader process stopped successfully")
|
||||
|
||||
# Запуск нового процесса загрузки префиксов
|
||||
print("Starting new prefix loader process...")
|
||||
success, output, error = run_command("docker exec bgp-server /app/scripts/load_prefixes.py &")
|
||||
|
||||
if success:
|
||||
print("Prefix loader process started successfully")
|
||||
return True
|
||||
else:
|
||||
print(f"Error starting prefix loader: {error}")
|
||||
return False
|
||||
|
||||
def check_status():
|
||||
"""Проверка статуса после перезагрузки"""
|
||||
print("Checking status...")
|
||||
time.sleep(5)
|
||||
|
||||
# Проверка процесса
|
||||
success, output, error = run_command("docker exec bgp-server pgrep -f load_prefixes.py")
|
||||
if success:
|
||||
print("✓ Prefix loader process is running")
|
||||
else:
|
||||
print("✗ Prefix loader process is not running")
|
||||
return False
|
||||
|
||||
# Проверка логов
|
||||
success, output, error = run_command("docker exec bgp-server tail -n 5 /app/logs/prefixes.log")
|
||||
if success:
|
||||
print("Recent log entries:")
|
||||
print(output)
|
||||
else:
|
||||
print("No recent log entries found")
|
||||
|
||||
return True
|
||||
|
||||
def main():
|
||||
"""Основная функция"""
|
||||
print("=== BGP Prefix Reloader ===")
|
||||
|
||||
# Проверка что контейнер запущен
|
||||
success, output, error = run_command("docker ps --filter name=bgp-server --format '{{.Status}}'")
|
||||
if not success or not output.strip():
|
||||
print("Error: BGP server container is not running")
|
||||
print("Please start the container first: docker-compose up -d")
|
||||
return 1
|
||||
|
||||
print("BGP server container is running")
|
||||
|
||||
# Перезагрузка префиксов
|
||||
if reload_prefixes():
|
||||
print("Prefix reload completed successfully")
|
||||
|
||||
# Проверка статуса
|
||||
if check_status():
|
||||
print("✓ All checks passed")
|
||||
return 0
|
||||
else:
|
||||
print("✗ Some checks failed")
|
||||
return 1
|
||||
else:
|
||||
print("✗ Prefix reload failed")
|
||||
return 1
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user