#!/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}"