A
A
AlizonJohn2018-02-28 12:48:16
bash
AlizonJohn, 2018-02-28 12:48:16

OpenWrt: subnet selection script not working on PPPoE connection, what's wrong?

Hello everybody! There is a router, firmware in OpenWrt, provider Rostelecom, PPPoE protocol. When establishing a PPPoE connection, an IP address from 10.20.32.0/20 is randomly assigned. I want the router to disable and enable the PPPoE connection itself until it receives an IP address from the pool 10.20.38.0/24. At the same time, if this did not work out in 10 attempts, then we leave the address that we have now.
I am a complete zero in scripts, I wrote this, using examples from the Internet - findpool.sh

#!/bin/sh

ipiwant="10.20.38." #я хочу получить адрес из этой подсети
myvar=0 
while [ $myvar -ne 10 ] #если за 10 попыток не удалось получить нужный ip-адрес - то оставляем тот, который есть
do
myvar=$(( $myvar + 1 ))
unset ip #обнуляем переменную ip
. /lib/functions/network.sh; network_get_ipaddr ip wan; #тут мы присваиваем переменной ip наш текущий WAN ip-адрес вида aaa.bbb.ccc.ddd
echo "$ip" >> /tmp/log/ip.log #записываем значение переменной ip в лог файл, что бы видеть что ip-адреса меняются при перезагрузке сетевого интерфейса
obrezkaWAN=$(echo $ip | grep -o -E '([0-9]+\.){3}') #обрезаем наш WAN ip-адрес до вида aaa.bbb.ccc.
# далее сравниваем желаемый ip-адрес с полученным
if [ "$obrezkaWAN" != "$ipiwant" ]; then # если ip-адреса не совпали - перезагружаем PPPoE соединение
        (ifdown wan; sleep 10; ifup wan) &
        sleep 2
else
        break # если ip-адреса совпадают или закончились 10 попыток - просто выходим из цикла и запускаем обратный ssh до моего сервера на работе
fi
done

/etc/crontabs/restartssh.sh >/dev/null 2>&1

Next, I write the findpool.sh address to the rc.local file and reboot the router.
Problems - it's not clear if the script works, because it just writes 10 identical ip-addresses to the log file. BUT! these addresses do not match the current ones in the ifconfig command, respectively, like the WAN ip addresses change, but I can’t “catch” the address pool I need and it’s not clear why 10 identical addresses are written to the log file. Please help me find the error.

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question