1
0

ros7_functions.sh 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. #!/bin/bash
  2. # Импорт общих функций
  3. source "$(dirname "$0")/functions.sh"
  4. # Функция загрузки ROS 7
  5. download_ros7() {
  6. local user_agent=$1
  7. local version_prefix=$2
  8. local description=$3
  9. local force=$4
  10. log "Checking ${description}"
  11. for firmware_version in "${versions7[@]}"; do
  12. log "Analyzing version ${firmware_version}"
  13. $WGET $WGET_OPTS -U "$user_agent" "http://upgrade.mikrotik.com/routeros/NEWEST${version_prefix}7.${firmware_version}" -O "${TARGET_DIR}/NEWEST${version_prefix}7.${firmware_version}.new"
  14. if ! check_error $? "Failed to get NEWEST${version_prefix}7.${firmware_version}"; then
  15. continue
  16. fi
  17. old_version=$(head -1 "${TARGET_DIR}/NEWEST${version_prefix}7.${firmware_version}" 2>/dev/null | awk '{print $1}')
  18. old_timestamp=$(head -1 "${TARGET_DIR}/NEWEST${version_prefix}7.${firmware_version}" 2>/dev/null | awk '{print $2}')
  19. new_version=$(head -1 "${TARGET_DIR}/NEWEST${version_prefix}7.${firmware_version}.new" | awk '{print $1}')
  20. new_timestamp=$(head -1 "${TARGET_DIR}/NEWEST${version_prefix}7.${firmware_version}.new" | awk '{print $2}')
  21. log "Latest ${description} release: ${new_version}"
  22. version_changed=1
  23. if [ "x${new_version}" = "x${old_version}" ] && [ "x${old_timestamp}" = "x${new_timestamp}" ]; then
  24. version_changed=
  25. fi
  26. if [ "x${force}" = "x" ] && [ "x${version_changed}" = "x" ]; then
  27. log "Current version ${old_version} unchanged. Skipping."
  28. rm -f "${TARGET_DIR}/NEWEST${version_prefix}7.${firmware_version}.new"
  29. continue
  30. fi
  31. log "New version found: ${new_version}"
  32. log "Downloading packages..."
  33. mkdir -p "${TARGET_DIR}/${new_version}"
  34. cd "${TARGET_DIR}/${new_version}" || continue
  35. $WGET $WGET_OPTS -U "$user_agent" "http://upgrade.mikrotik.com/routeros/${new_version}/CHANGELOG"
  36. if ! check_error $? "Failed to download CHANGELOG"; then
  37. continue
  38. fi
  39. download_err=
  40. for file_arch in "${firmware_arch[@]}"; do
  41. # Packages
  42. $WGET $WGET_OPTS -U "$user_agent" "http://upgrade.mikrotik.com/routeros/${new_version}/all_packages-${file_arch}-${new_version}.zip"
  43. if ! check_error $? "Failed to download all_packages-${file_arch}-${new_version}.zip"; then
  44. download_err=1
  45. break
  46. fi
  47. # RouterOS
  48. if [ "${file_arch}" = "x86" ]; then
  49. $WGET $WGET_OPTS -U "$user_agent" "http://upgrade.mikrotik.com/routeros/${new_version}/routeros-${new_version}.npk"
  50. else
  51. $WGET $WGET_OPTS -U "$user_agent" "http://upgrade.mikrotik.com/routeros/${new_version}/routeros-${new_version}-${file_arch}.npk"
  52. fi
  53. if ! check_error $? "Failed to download routeros for ${file_arch}"; then
  54. download_err=1
  55. break
  56. fi
  57. done
  58. if [ -n "${download_err}" ]; then
  59. log_error "Download errors for ${new_version}. Skipping."
  60. continue
  61. fi
  62. # Additional files
  63. download_additional_files "${new_version}" "$user_agent"
  64. mv "${TARGET_DIR}/NEWEST${version_prefix}7.${firmware_version}.new" "${TARGET_DIR}/NEWEST${version_prefix}7.${firmware_version}"
  65. log_success "ROS 7 version ${new_version} downloaded successfully."
  66. done
  67. }
  68. # Функция загрузки ROS 7
  69. download_specific_ros7() {
  70. local user_agent=$1
  71. local version=$2
  72. log "Downloading packages..."
  73. mkdir -p "${TARGET_DIR}/${version}"
  74. cd "${TARGET_DIR}/${version}" || return 1
  75. $WGET $WGET_OPTS -U "$user_agent" "http://upgrade.mikrotik.com/routeros/${version}/CHANGELOG"
  76. if ! check_error $? "Failed to download CHANGELOG"; then
  77. return 1
  78. fi
  79. download_err=
  80. for file_arch in "${firmware_arch[@]}"; do
  81. # Packages
  82. $WGET $WGET_OPTS -U "$user_agent" "http://upgrade.mikrotik.com/routeros/${version}/all_packages-${file_arch}-${version}.zip"
  83. if ! check_error $? "Failed to download all_packages-${file_arch}-${version}.zip"; then
  84. download_err=1
  85. break
  86. fi
  87. # RouterOS
  88. if [ "${file_arch}" = "x86" ]; then
  89. $WGET $WGET_OPTS -U "$user_agent" "http://upgrade.mikrotik.com/routeros/${version}/routeros-${version}.npk"
  90. else
  91. $WGET $WGET_OPTS -U "$user_agent" "http://upgrade.mikrotik.com/routeros/${version}/routeros-${version}-${file_arch}.npk"
  92. fi
  93. if ! check_error $? "Failed to download routeros for ${file_arch}"; then
  94. download_err=1
  95. break
  96. fi
  97. done
  98. if [ -n "${download_err}" ]; then
  99. log_error "Download errors for ${version}. Skipping."
  100. return 1
  101. fi
  102. # Additional files
  103. download_additional_files "${version}" "$user_agent"
  104. log_success "ROS 7 version ${version} downloaded successfully."
  105. }