sync_mikrotik_repo.sh 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. #!/bin/bash
  2. #path for you repo
  3. TARGET_DIR="/mnt/mirror/routeros"
  4. #Analyze ROS versions
  5. # ROS 6
  6. #stable=>"6" lts=>"6fix"
  7. versions6=("6" "6fix")
  8. #ROS7
  9. versions7=("7")
  10. #needed architecture's
  11. firmware_arch=("arm" "arm64" "mipsbe" "mmips" "ppc" "smips" "tile" "x86")
  12. #path for wget
  13. WGET="/bin/wget"
  14. ##################################### Main ###################################################
  15. #always sync packages
  16. force=$1
  17. wget_opts="-q -nc"
  18. if [ -n "${force}" ]; then
  19. echo "Force flag for download packages found!"
  20. fi
  21. ###################################### ROS 6 ##################################################
  22. echo "Check ROS 6 releases"
  23. for firmware_version in "${versions6[@]}"; do
  24. echo "Analyze version ${firmware_version}"
  25. echo "Get latest release"
  26. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/LATEST.${firmware_version}" -O "${TARGET_DIR}/LATEST.${firmware_version}.new"
  27. ret=$?
  28. if [ ${ret} -ne 0 ]; then
  29. echo "Error get release version for ${firmware_version}"
  30. exit 100
  31. fi
  32. old_version=$(cat "${TARGET_DIR}/LATEST.${firmware_version}" | head -1 | awk '{ print $1 }')
  33. new_version=$(cat "${TARGET_DIR}/LATEST.${firmware_version}.new" | head -1 | awk '{ print $1 }')
  34. if [ "x${force}" == "x" -a "x${new_version}" == "x${old_version}" ]; then
  35. echo "Version don't changed. Next."
  36. rm -f "${TARGET_DIR}/LATEST.${firmware_version}.new"
  37. continue
  38. fi
  39. echo "Found new version ${new_version}. Old: ${old_version}. Try download packages..."
  40. if [ ! -e "${TARGET_DIR}/${new_version}" ]; then
  41. mkdir -p "${TARGET_DIR}/${new_version}"
  42. fi
  43. cd "${TARGET_DIR}/${new_version}"
  44. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/CHANGELOG"
  45. ret=$?
  46. if [ ${ret} -ne 0 ]; then
  47. echo "Error get changelog for ${new_version}. Skip release."
  48. continue
  49. fi
  50. download_error=
  51. for file_arch in "${firmware_arch[@]}"; do
  52. #packages
  53. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/all_packages-${file_arch}-${new_version}.zip"
  54. ret=$?
  55. if [ ${ret} -ne 0 ]; then
  56. echo "Error get all_packages-${file_arch}-${new_version}.zip"
  57. download_err=1
  58. break
  59. fi
  60. #routeros
  61. if [ "${file_arch}" == "ppc" ]; then
  62. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/routeros-powerpc-${new_version}.npk"
  63. else
  64. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/routeros-${file_arch}-${new_version}.npk"
  65. fi
  66. ret=$?
  67. if [ ${ret} -ne 0 ]; then
  68. echo "Error get routeros-${file_arch}-${new_version}.npk"
  69. download_err=1
  70. break
  71. fi
  72. done
  73. if [ -n "${download_err}" ]; then
  74. echo "Found errors by download packages. Skip release"
  75. rm -f "${TARGET_DIR}/LATEST.${firmware_version}.new"
  76. download_err=
  77. continue
  78. fi
  79. #other files
  80. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/btest.exe"
  81. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/dude-install-${new_version}.exe"
  82. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/flashfig.exe"
  83. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/install-image-${new_version}.zip"
  84. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/mikrotik-${new_version}.iso"
  85. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/mikrotik.mib"
  86. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/netinstall64-${new_version}.zip"
  87. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/netinstall-${new_version}.tar.gz"
  88. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/netinstall-${new_version}.zip"
  89. #winbox
  90. ${WGET} ${wget_opts} "https://mt.lv/winbox" -O "${TARGET_DIR}/${new_version}/winbox.exe"
  91. ${WGET} ${wget_opts} "https://mt.lv/winbox64" -O "${TARGET_DIR}/${new_version}/winbox64.exe"
  92. rm -f "${TARGET_DIR}/LATEST.${firmware_version}"
  93. mv "${TARGET_DIR}/LATEST.${firmware_version}.new" "${TARGET_DIR}/LATEST.${firmware_version}"
  94. done
  95. ###################################### ROS 7 ##################################################
  96. echo "Check ROS 7 releases"
  97. for firmware_version in "${versions7[@]}"; do
  98. echo "Analyze version ${firmware_version}"
  99. echo "Get latest release"
  100. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/LATEST.${firmware_version}" -O "${TARGET_DIR}/LATEST.${firmware_version}.new"
  101. ret=$?
  102. if [ ${ret} -ne 0 ]; then
  103. echo "Error get release version for ${firmware_version}"
  104. exit 100
  105. fi
  106. old_version=$(cat "${TARGET_DIR}/LATEST.${firmware_version}" | head -1 | awk '{ print $1 }')
  107. new_version=$(cat "${TARGET_DIR}/LATEST.${firmware_version}.new" | head -1 | awk '{ print $1 }')
  108. if [ "x${force}" == "x" -a "x${new_version}" == "x${old_version}" ]; then
  109. echo "Version don't changed. Next."
  110. rm -f "${TARGET_DIR}/LATEST.${firmware_version}.new"
  111. continue
  112. fi
  113. echo "Found new version ${new_version}. Old: ${old_version}. Try download packages..."
  114. if [ ! -e "${TARGET_DIR}/${new_version}" ]; then
  115. mkdir -p "${TARGET_DIR}/${new_version}"
  116. fi
  117. cd "${TARGET_DIR}/${new_version}"
  118. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/CHANGELOG"
  119. ret=$?
  120. if [ ${ret} -ne 0 ]; then
  121. echo "Error get changelog for ${new_version}. Skip release."
  122. continue
  123. fi
  124. download_error=
  125. for file_arch in "${firmware_arch[@]}"; do
  126. #packages
  127. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/all_packages-${file_arch}-${new_version}.zip"
  128. ret=$?
  129. if [ ${ret} -ne 0 ]; then
  130. echo "Error get all_packages-${file_arch}-${new_version}.zip"
  131. download_err=1
  132. break
  133. fi
  134. #routeros
  135. if [ "${file_arch}" == "x86" ]; then
  136. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/routeros-${new_version}.npk"
  137. else
  138. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/routeros-${new_version}-${file_arch}.npk"
  139. fi
  140. ret=$?
  141. if [ ${ret} -ne 0 ]; then
  142. echo "Error get routeros-${new_version}-${file_arch}.npk"
  143. download_err=1
  144. break
  145. fi
  146. done
  147. if [ -n "${download_err}" ]; then
  148. echo "Found errors by download packages. Skip release"
  149. rm -f "${TARGET_DIR}/LATEST.${firmware_version}.new"
  150. download_err=
  151. continue
  152. fi
  153. #other files
  154. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/btest.exe"
  155. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/dude-install-${new_version}.exe"
  156. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/flashfig.exe"
  157. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/install-image-${new_version}.zip"
  158. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/mikrotik-${new_version}.iso"
  159. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/mikrotik.mib"
  160. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/netinstall64-${new_version}.zip"
  161. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/netinstall-${new_version}.tar.gz"
  162. ${WGET} ${wget_opts} "http://upgrade.mikrotik.com/routeros/${new_version}/netinstall-${new_version}.zip"
  163. #winbox
  164. ${WGET} ${wget_opts} "https://mt.lv/winbox" -O "${TARGET_DIR}/${new_version}/winbox.exe"
  165. ${WGET} ${wget_opts} "https://mt.lv/winbox64" -O "${TARGET_DIR}/${new_version}/winbox64.exe"
  166. rm -f "${TARGET_DIR}/LATEST.${firmware_version}"
  167. mv "${TARGET_DIR}/LATEST.${firmware_version}.new" "${TARGET_DIR}/LATEST.${firmware_version}"
  168. echo "Version ${new_version} downloaded."
  169. done
  170. exit