download_ros.sh 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. log "Downloading specific ROS 6 version: $version"
  62. download_specific_ros6_version "$version"
  63. ;;
  64. "ros7")
  65. log "Downloading specific ROS 7 version: $version"
  66. local user_agent_info=$(get_ros7_user_agent "$version")
  67. if [ "${user_agent_info}" == 'after' ]; then
  68. download_specific_ros7 "RouterOS 7.12.1" "$version"
  69. else
  70. download_specific_ros7 "RouterOS 7.10" "$version"
  71. fi
  72. ;;
  73. esac
  74. }
  75. if [ -n "${version}" ]; then
  76. # Загрузка конкретной версии
  77. download_specific_version "$version"
  78. else
  79. # Если версия не передана - не делаем ничего
  80. log "No version specified. Exiting."
  81. exit 0
  82. fi
  83. log "Script completed successfully"
  84. exit 0