Всем здравствуйте! Есть роутер, прошит в OpenWrt, провайдер Ростелеком, протокол PPPoE. При установке PPPoE соединения рендомно выдается IP-адрес из 10.20.32.0/20. Я хочу что бы роутер сам отключал и включал PPPoE соединение, пока не получит IP адрес из пула 10.20.38.0/24. При этом, если это не получилось за 10 попыток - то оставляем тот адрес, который есть сейчас.
Я полный ноль в скриптах, написал вот такое, по примерам из интернета - 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
Далее - прописываю адрес findpool.sh в файл rc.local и перезагружаю роутер.
Проблемы - не понятно, работает ли скрипт, потому что он пишет в логфайл просто 10 одинаковых ip-адресов. НО! эти адреса не совпадают с текущими в комманде ifconfig, соответственно, вроде WAN ip-адреса меняются, но никак не могу «поймать» нужный мне пул адресов и непонятно почему в логфайл пишется 10 одинаковых адресов. Помогите, пожалуйста, найти ошибку.