ungleich-tools/openwrt/viwib-1-black-firmware-upgrade.sh
2024-05-09 13:51:02 +02:00

69 lines
1.4 KiB
Bash
Executable file

#!/bin/sh
# 2020-06-13, Nico Schottelius
# See https://ungleich.ch/u/products/viirb-ipv6-box/
if [ $# -ne 1 ]; then
echo "$0 address"
echo " address: connect to this address (default: 192.168.8.1)"
exit 1
fi
set -x
viwib_ip=$1; shift
# openwrt
version=23.05.3
filename=openwrt-${version}-ath79-nand-glinet_gl-ar300m-nor-squashfs-sysupgrade.bin
url=https://downloads.openwrt.org/releases/${version}/targets/ath79/nand
# don't care about other/old known_host entries
ssh-keygen -R ${viwib_ip}
while ! ping -c1 ${viwib_ip}; do
echo "Cannot ping $viwib_ip yet - waiting"
sleep 1
done
cat ~/.ssh/id_rsa.pub | ssh root@${viwib_ip} "cat > /etc/dropbear/authorized_keys"
# Don't re-download if we already have it
wget -c ${url}/${filename}
if echo $viwib_ip | grep -q :; then
scp_ip="[$viwib_ip]"
else
scp_ip="$viwib_ip"
fi
scp -O ${filename} root@${scp_ip}:/tmp
ssh root@${viwib_ip} "sysupgrade -n /tmp/${filename}"
# It still pings for some time - wait for the reboot to happen
echo "Waiting for viwib to really disappear"
sleep 30
wait=0
found=""
while [ $wait -lt 180 ]; do
ping -c1 ${viwib_ip} >/dev/null
if [ $? -eq 0 ]; then
found=yes
# wait for ssh to come up
sleep 10
break
fi
sleep 1
wait=$((wait+1))
done
if [ ! "$found" ]; then
echo "Did not find updated viwib - debug / restart it"
exit 1
fi
echo "viwib successfully updated to ${version}"