#!/bin/sh # 2020-06-13, Nico Schottelius # See https://ungleich.ch/u/products/viirb-ipv6-box/ if [ $# -lt 1 ]; then echo "$0 interface [address]" echo " interface to add the config ip address to" echo " address: connect to this address, ignore the interface" exit 1 fi set -x dev=$1; shift # $# = 2 # shift -> remove the first argument # $# = 1 if [ $# -ge 1 ]; then viirb_ip=$1; shift dev="" else viirb_ip=192.168.61.1 fi # openwrt version=19.07.4 filename=openwrt-${version}-ramips-mt76x8-vocore2-squashfs-sysupgrade.bin # IP address for setting it up initially if [ "$dev" ]; then sudo ip addr del 192.168.61.2/24 dev "$dev" 2>/dev/null || true sudo ip addr add 192.168.61.2/24 dev "$dev" fi # don't care about other/old known_host entries ssh-keygen -R ${viirb_ip} while ! ping -c1 ${viirb_ip}; do echo "Cannot ping $viirb_ip yet - waiting" sleep 1 done cat ~/.ssh/id_rsa.pub | ssh root@${viirb_ip} "cat > /etc/dropbear/authorized_keys" # Don't re-download if we already have it wget -c http://downloads.openwrt.org/releases/${version}/targets/ramips/mt76x8/${filename} if echo $viirb_ip | grep -q :; then scp_ip="[$viirb_ip]" else scp_ip="$viirb_ip" fi scp ${filename} root@${scp_ip}:/tmp ssh root@${viirb_ip} "sysupgrade /tmp/*.bin" # It still pings for some time - wait for the reboot to happen echo "Waiting for VIIRB to really disappear" sleep 15 wait=0 found="" while [ $wait -lt 180 ]; do ping -c1 ${viirb_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 viirb - debug / restart it" exit 1 fi echo "VIIRB successfully updated to ${version}"