download_ros.sh 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #!/bin/bash
  2. # Импорт конфигурации и функций
  3. SCRIPT_DIR="$(dirname "$0")"
  4. source "${SCRIPT_DIR}/config.sh"
  5. source "${SCRIPT_DIR}/functions.sh"
  6. source "${SCRIPT_DIR}/ros6_functions.sh"
  7. source "${SCRIPT_DIR}/ros7_functions.sh"
  8. # Создаем директорию если нет
  9. mkdir -p "$TARGET_DIR"
  10. # Начало лога
  11. log "Starting RouterOS download script"
  12. #log "Target directory: $TARGET_DIR"
  13. ##################################### Main ###################################################
  14. force=$1
  15. version=$2
  16. if [ -n "${force}" ] && [ "${force}" != "force" ]; then
  17. # Если первый параметр не "force", то это может быть версия
  18. if [ -z "${version}" ]; then
  19. version="${force}"
  20. force=""
  21. fi
  22. fi
  23. if [ -n "${force}" ]; then
  24. log "Force flag for download packages found!"
  25. fi
  26. # Функция для преобразования версии в числовой формат
  27. version_to_number() {
  28. local version=$1
  29. local major=$(echo $version | cut -d. -f1)
  30. local minor=$(echo $version | cut -d. -f2)
  31. local patch=$(echo $version | cut -d. -f3)
  32. echo $((major * 1000000 + minor * 1000 + patch))
  33. }
  34. # Функция для определения типа версии и нужного user agent
  35. get_ros7_user_agent() {
  36. local version=$1
  37. local version_num=$(version_to_number "$version")
  38. local threshold_num=$(version_to_number "7.12.1")
  39. if [ $version_num -ge $threshold_num ]; then
  40. # Версия равна или выше 7.12.1
  41. echo "after"
  42. else
  43. # Версия ниже 7.12.1
  44. echo "before"
  45. fi
  46. }
  47. # Функция для загрузки конкретной версии
  48. download_specific_version() {
  49. local version=$1
  50. local version_type=""
  51. if [[ "$version" =~ ^6\. ]]; then
  52. version_type="ros6"
  53. elif [[ "$version" =~ ^7\. ]]; then
  54. version_type="ros7"
  55. else
  56. log_error "Unknown version format: $version"
  57. exit 1
  58. fi
  59. case $version_type in
  60. "ros6")
  61. download_specific_ros6_version "$version"
  62. ;;
  63. "ros7")
  64. local user_agent_info=$(get_ros7_user_agent "$version")
  65. if [ "${user_agent_info}" == 'after' ]; then
  66. download_specific_ros7 "RouterOS 7.12.1" "$version"
  67. else
  68. download_specific_ros7 "RouterOS 7.10" "$version"
  69. fi
  70. ;;
  71. esac
  72. }
  73. if [ -n "${version}" ]; then
  74. # Загрузка конкретной версии
  75. download_specific_version "$version"
  76. else
  77. # Если версия не передана - не делаем ничего
  78. log "No version specified. Exiting."
  79. exit 0
  80. fi
  81. log "Script completed successfully"
  82. exit 0