123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- #!/bin/bash
- DEFMODE=main
- MODE=${2:-$DEFMODE}
- IAPPASS=rotekucn
- LOGIN=admin
- PASS=12345
- DB_FW=""
- #MAIN_FW=./output/RTPS_05502xx.bin
- MAIN_FW=./output/IBP.bin
- SERVICE_FW=./output/SERVICE_05502xx.bin
- function usage {
- echo -e "Usage: upload.sh {ip|mac} {full|main|db|service}\n\
- \tmain - update main firmware\n\
- \tdb - update doughter board firmware\n\
- \service - upload service firmware\n\
- \tfull - update both main and doughter boards firmware"
- }
- function wait_ip {
- while ! ping -c1 -W1 $IP > /dev/null
- do
- echo "Waiting IP.."
- sleep 1
- ((i++))
- if [ $i == 10 ]
- then
- echo -e "\r\nError. IP not found!"
- exit 1
- fi
- done
- }
- function need_login {
- curl -s --compressed -b /tmp/cookies.txt -c /tmp/cookies.txt http://$IP/index.html | grep -q "Авторизация"
- }
- function need_iap {
- curl -s --compressed -b /tmp/cookies.txt -c /tmp/cookies.txt http://$IP/index.html | grep -q "Параметры"
- }
- function log_out {
- curl -s -b /tmp/cookies.txt -c /tmp/cookies.txt http://$IP/logout.cgi > /dev/null
- }
- function log_in {
- curl -s -b /tmp/cookies.txt -c /tmp/cookies.txt -d "login=$LOGIN&password=$PASS" http://$IP/login.cgi > /dev/null
- }
- function boot_iap {
- curl -s -X GET -b /tmp/cookies.txt -c /tmp/cookies.txt http://$IP/fw_update.cgi > /dev/null
- }
- function upload_db_fw {
- echo $(curl --compressed http://$IP/upload.cgi -H 'Expect:' -F filedata=@$DB_FW --progress-bar)
- }
- function upload_main_fw {
- echo $(curl --compressed http://$IP/upload.cgi -H 'Expect:' -F filedata=@$MAIN_FW --progress-bar)
- }
- function upload_service_fw {
- TMP_FILE=$(mktemp -d /tmp/upload.XXXXX)/$(basename $MAIN_FW)
- cp $SERVICE_FW $TMP_FILE
- echo $(curl --compressed http://$IP/upload.cgi -H 'Expect:' -F filedata=@$TMP_FILE --progress-bar)
- }
- function goback {
- curl -s http://$IP/goback.cgi
- }
- if [ $# -lt 1 ]
- then
- echo "Error: Not enough parameters"
- usage
- exit 1
- fi
- #Check passed parameter
- if [[ "$1" =~ ^([a-fA-F0-9]{2}[:-]){5}[a-fA-F0-9]{2}$ ]]
- then
- #Passed MAC
- MAC=$(echo $1 | tr '[:upper:]' '[:lower:]' | tr '-' ':')
- IP=$(sudo arp-scan -l | grep $MAC | cut -d$'\t' -f1)
- elif [[ "$1" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]
- then
- #Passed IP
- IP=$1
- else
- echo "Error: Invalid parameter"
- usage
- exit 1
- fi
- ping -c1 -W1 $IP 2>/dev/null 1>/dev/null
- if [ "$?" = 0 ]
- then
- echo "Host found ($IP)"
- else
- echo "Error: Host not found ($IP)"
- exit 1
- fi
- if need_login
- then
- echo "Logging in.."
- log_in
- fi
- if need_iap
- then
- echo "Reboot to IAP.."
- boot_iap
- sleep 10
- wait_ip
- fi
- if [[ $MODE = "full" || $MODE = "db" ]]
- then
- echo "Prog db firmware.."
- db_res=$(upload_db_fw)
- if [[ $db_res == "1" ]]
- then
- echo "OK"
- else
- echo "Error"
- echo "Update failed!"
- exit 1
- fi
- sleep 1
- fi
- if [[ $MODE = "db" ]]
- then
- goback
- echo "Successfully updated"
- exit 0
- fi
- if [[ $MODE = "full" || $MODE = "main" ]]
- then
- echo "Prog main firmware.."
- main_res=$(upload_main_fw)
- if [[ $main_res == "1" ]]
- then
- echo "OK"
- else
- echo "Error"
- echo "Update failed!"
- exit 1
- fi
- fi
- if [[ $MODE = "service" ]]
- then
- echo "Prog service firmware.."
- res=$(upload_service_fw)
- if [[ $res == "1" ]]
- then
- echo "OK"
- else
- echo "Error"
- echo "Update failed!"
- exit 1
- fi
- rm -rf $TMP_FILE
- fi
- echo "Successfully updated"
- exit 0
|