autoflash.sh 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #!/bin/bash
  2. base_fw_url=http://firmware.paderborn.freifunk.net/stable/
  3. base_fw_name="gluon-ffpb-0.5"
  4. function quit() {
  5. if [ x"${BASH_SOURCE[0]}" == x"$0" ]; then
  6. exit $*
  7. else
  8. return $*
  9. fi
  10. }
  11. function curl_admin() {
  12. curl -fsS --basic -u admin:admin $@
  13. }
  14. # download missing firmware images
  15. for model in tp-link-tl-wr841n-nd-v8 tp-link-tl-wr841n-nd-v9 tp-link-tl-wdr3500-v1 tp-link-tl-wdr3600-v1 tp-link-tl-wdr4300-v1; do
  16. if [ ! -r "images/${base_fw_name}${model}.bin" ]; then
  17. echo -en "Downloading image for '$model' ... "
  18. wget -q "${base_fw_url}${base_fw_name}-${model}.bin" -O "images/${base_fw_name}${model}.bin"
  19. if [ $? -eq 0 ]; then
  20. echo "OK"
  21. else
  22. echo "ERROR"
  23. rm "images/${base_fw_name}${model}.bin" 2>/dev/null
  24. echo "Failed to download firmware. Please ensure the firmware for '${base_fw_name}${model}' is present in images/ directory."
  25. quit 3
  26. fi
  27. fi
  28. done
  29. ping -n -c 1 -W 1 192.168.0.1 > /dev/null
  30. if [ $? -ne 0 ]; then
  31. echo "ROUTER OFFLINE? cannot ping 192.168.0.1 :("
  32. quit 1
  33. fi
  34. model=$(curl_admin http://192.168.0.1/ | grep -oE "WD?R[0-9]+N?")
  35. echo "found model: $model"
  36. hwver_page="http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm"
  37. hwver=$(curl_admin -e http://192.168.0.1/userRpm/MenuRpm.htm $hwver_page | grep -oE "$model v[0-9]+")
  38. echo "hw version: $hwver"
  39. uploadurl="http://192.168.0.1/incoming/Firmware.htm"
  40. image=""
  41. if [ "$hwver" = "WR841N v9" ]; then
  42. image="${base_fw_name}tp-link-tl-wr841n-nd-v9.bin"
  43. elif [ "$hwver" = "WR841N v8" ]; then
  44. image="${base_fw_name}tp-link-tl-wr841n-nd-v8.bin"
  45. elif [ "$hwver" = "WDR3500 v1" ]; then
  46. image="${base_fw_name}tp-link-tl-wdr3500-v1.bin"
  47. elif [ "$hwver" = "WDR3600 v1" ]; then
  48. image="${base_fw_name}tp-link-tl-wdr3600-v1.bin"
  49. elif [ "$hwver" = "WDR4300 v1" ]; then
  50. image="${base_fw_name}tp-link-tl-wdr4300-v1.bin"
  51. else
  52. echo "UNKNOWN MODEL ($hwver), SORRY :("
  53. quit 2
  54. fi
  55. # prepend images/ subdirectory to filename
  56. image="images/$image"
  57. echo -en "flashing image: $image ... "
  58. curl_admin -e $hwver_page -F Filename=@$image $uploadurl > /dev/null
  59. curl_admin -e $uploadurl http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm > /dev/null
  60. echo "done :)"
  61. echo -en "waiting for router to come up again "
  62. while ! ping -n -c 1 -W 2 192.168.1.1 > /dev/null; do
  63. echo -en "."
  64. sleep 1
  65. done
  66. echo " \o/"
  67. echo