diff --git a/rakupgrade.sh b/rakupgrade.sh new file mode 100644 index 0000000..6919b28 --- /dev/null +++ b/rakupgrade.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +set -e + +INTERFACE="enp5s0" +LOCAL_IP_SUFFIX=100 +LOCAL_PATH="./WisGateOS_2.2.13_RAK_b198_RAK636.rwi" +REMOTE_PATH=" /tmp/WisGateOS_2.2.13_RAK_b198_RAK636.rwi" +REMOTE_USER="root" +SSH_OPTIONS="-o StrictHostKeyChecking=no" +echo "🔎 Pobieram MAC adres swojego interfejsu..." + +OWN_MAC=$(cat /sys/class/net/${INTERFACE}/address | tr '[:lower:]' '[:upper:]') + +echo "✅ Własny MAC interfejsu $INTERFACE: $OWN_MAC" + +echo "🎧 Podsłuchuję DHCP pakiety, czekam na bramę..." + +DEVICE_MAC=$(sudo timeout 60 tcpdump -i $INTERFACE -nn -l -v udp port 67 or udp port 68 \ + 2>/dev/null | \ + grep -oEi '([0-9a-f]{2}:){5}[0-9a-f]{2}' | \ + grep -vi "$OWN_MAC" | \ + head -n1) + +if [ -z "$DEVICE_MAC" ]; then + echo "❌ Nie udało się znaleźć żadnego pakietu DHCP poza własnym interfejsem." + exit 1 +fi + +echo "✅ Znaleziony MAC bramy: $DEVICE_MAC" + +# Rozbij MAC na bajty +IFS=':' read -ra mac_bytes <<< "$DEVICE_MAC" +LAST_B1=${mac_bytes[4]} +LAST_B2=${mac_bytes[5]} + +LAST_B1_DEC=$((16#${LAST_B1})) +LAST_B2_DEC=$((16#${LAST_B2})) + +GATEWAY_IP="169.254.${LAST_B1_DEC}.${LAST_B2_DEC}" +LOCAL_IP="169.254.${LAST_B1_DEC}.${LOCAL_IP_SUFFIX}" + +echo "🌐 Gateway IP: $GATEWAY_IP" +echo "🌐 Local IP: $LOCAL_IP" + +echo "⚙️ Konfiguruję interfejs $INTERFACE..." + +# Ustawiamy IP lokalne +sudo ip addr flush dev $INTERFACE +sudo ip addr add ${LOCAL_IP}/24 dev $INTERFACE +sudo ip link set $INTERFACE up + +echo "✅ Interfejs skonfigurowany." + +#Wgrywanie nowego FW +echo "📤 Kopiuję plik ${LOCAL_PATH} na urządzenie..." +ssh $SSH_OPTIONS ${REMOTE_USER}@${GATEWAY_IP} "cat > ${REMOTE_PATH}" < $LOCAL_PATH +echo "✅ Plik skopiowany." + +ssh $SSH_OPTIONS ${REMOTE_USER}@${GATEWAY_IP} "\ +sysupgrade ${REMOTE_PATH}" +echo "✅ System upgraded successfull." +echo "🎉 Wszystko gotowe!" \ No newline at end of file