Jump to content

«Белый» IP от Ростелеком с помощью Entware


Recommended Posts

Поставил Entware3x, тоже самое. При получении "серого" IP, в логе такая ошибка и скрипт не отрабатывает.

Роутер Giga II  v2.08(AAFS.2)A.

Цитата
Oct 27 19:34:11ndm
Network::Interface::Base: "PPPoE0": interface is up.
Oct 27 19:34:11ndm
Network::Interface::PPP: interface "PPPoE0" is global, priority 1000.
Oct 27 19:34:11ndm
Network::Interface::PPP: "PPPoE0": adding default route via PPPoE0.
Oct 27 19:34:11ndm
Network::Interface::PPP: adding nameserver 213.177.97.201.
Oct 27 19:34:11ndm
Dns::Manager: name server 213.177.97.201 added, domain (default).
Oct 27 19:34:11ndm
Network::Interface::PPP: adding nameserver 213.177.96.201.
Oct 27 19:34:11ndm
Dns::Manager: name server 213.177.96.201 added, domain (default).
Oct 27 19:34:12ndm
Network::Interface::IP: "PPPoE0": IP address is 100.78.179.59/32.
Oct 27 19:34:12white_ip[1350]
interface: ppp0 , address: 100.78.179.59
Oct 27 19:34:12white_ip[1350]
Reloading wan due grey IP - 100.78.179.59
Oct 27 19:34:12ndm
Core::Server: started Session /var/run/ndm.core.socket.
Oct 27 19:34:12ndm
Core::Server: client disconnected.
Oct 27 19:34:12ndm
Core::Server: started Session /var/run/ndm.core.socket.
Oct 27 19:34:12ndm
Command::Base: argument parse error.
Oct 27 19:34:12ndm
Opkg::Manager: /opt/etc/ndm/wan.d/white-ip.sh: Error: Command::Base: argument parse error.
Oct 27 19:34:12ndm
Core::Server: client disconnected.
Oct 27 19:34:13ndm
Core::ConfigurationSaver: configuration saved.
Oct 27 19:34:14ndm
Core::Server: started Session /var/run/ndm.core.socket.
Oct 27 19:34:14upnp
HTTP listening on port 46377
Oct 27 19:34:14upnp
Listening for NAT-PMP/PCP traffic on port 5351
Oct 27 19:34:14ndm
Core::Server: started Session /var/run/ndm.core.socket.
Oct 27 19:34:14ndm
Command::Base: argument parse error.
Oct 27 19:34:14ndm
Opkg::Manager: /opt/etc/ndm/wan.d/white-ip.sh: Error: Command::Base: argument parse error.
Oct 27 19:34:14ndm
Core::Server: client disconnected.
Oct 27 19:34:14white_ip[1350]
Finished

 

Link to comment
Share on other sites

Проверьте команды которые дает скрипт в Entware. может параметры CLI команд или параметры ndmq изменились. У меня 2.06, проверить не могу.

Link to comment
Share on other sites

Если дело только в DYNDNS то нужно просто убрать галочку Automatically guess my IP: .Это совет техподдержки ZyXEL. У меня это работает со времен первой ультры . Тогда думал, что дело в роутере, даже поменял после обращения в техподдержку. Но ничего не изменилось. После долгих мучений нашли выход.

Link to comment
Share on other sites

  • 3 months later...
  • 1 year later...
В 03.11.2016 в 06:52, VVJ сказал:

Если дело только в DYNDNS то нужно просто убрать галочку Automatically guess my IP: .Это совет техподдержки ZyXEL. У меня это работает со времен первой ультры . Тогда думал, что дело в роутере, даже поменял после обращения в техподдержку. Но ничего не изменилось. После долгих мучений нашли выход.

Домен третьего уровня от DYNDNS уже более трех лет как платный.

Так что смысл платить DYNDNS за привязку динамики к домену третьего уровня? Если у ростелекома если мне не изменяет память услуга стоит в районе 50-100р.

Разве что если у DYNDNS дешевле, тогда может быть...

Link to comment
Share on other sites

Для optware (белые кинетики, ndms v1) вроде такой скрипт тоже делали. Много времени прошло, что-то сейчас найти сложно, но может, у кого-то он остался? Или даже автор здесь присутствует?

Link to comment
Share on other sites

  • 1 month later...

Не могу ограничить количество попыток, продолжает переподключаться, помогите с кодом.

#!/bin/sh

counter=/opt/share/counter.txt
max_tries=2

[ -z "$address" ] && exit 0

logger -t WHITE-IP[$$] "interface: " $interface ", address: " $address

if [ "$interface" = "ppp0" ]; then
  _ip=$(echo $address | grep -v "^100\.")
  if [ -z "$_ip" ]; then
    # Get counter from temp file
    [ -f "$counter" ] || echo '0' > $counter
    try_nr="$(cat $counter)"
    # This is our try_nr try
    try_nr=$((try_nr+1))
    # Too much tries
    if [ $try_nr -gt $max_tries ]; then
      echo '0' > $counter
	  logger -t WHITE-IP[$$] "Too much tries. Exit";
      exit
    fi
    echo "$try_nr" > $counter
    logger -t WHITE-IP[$$] "Reloading wan due grey IP - $address";
    ndmq -p 'interface PPPoE0 no connect via ISP' -P message
    sleep 5
    ndmq -p 'interface PPPoE0 connect via ISP' -P message
  else
    echo '0' > $counter
    logger -t WHITE-IP[$$] "White IP - $address";
  fi
fi

Там же указано что если попыток больше то команда - exit - завершить скрипт, чё ему надо?

Edited by Quadro Rover
Link to comment
Share on other sites

  • 2 weeks later...
В ‎4‎/‎10‎/‎2018 в 10:59, Tammy сказал:

Так что смысл платить DYNDNS за привязку динамики к домену третьего уровня? Если у ростелекома если мне не изменяет память услуга стоит в районе 50-100р.

Сейчас " NO-IP" бесплатный. У Ростелекома год назад стоимость была 100 руб.

Link to comment
Share on other sites

45 минут назад, VVJ сказал:

У Ростелекома год назад стоимость была 100 руб.

это смотря где наверно. в нашем городе вообще физикам белую статику не продают. только юрикам.

Edited by Goblin
Link to comment
Share on other sites

  • 9 months later...

Немного обновил и причесал скрипт. Теперь работает стабильнее.

#!/opt/bin/sh

ConnName=Rostelecom
counter=/opt/tmp/CountReconnectWan.txt
previp=/opt/tmp/previp.txt
max_tries=10

LIST=`ndmq -p 'show interface' -x | xml sel -t -m '//interface[link="up"][state="up"][global="yes"][defaultgw="yes"]' -v '@name' -o ',' -v 'description' -o ',' -v 'address' -o ',' -v 'via' -n`
echo "$LIST" | grep -iwq "$ConnName" || exit 0

_ip=`echo "$LIST" | cut -d, -f3`
_prov=`echo "$LIST" | cut -d, -f2`
_iface=`echo "$LIST" | cut -d, -f1`
_via=`echo "$LIST" | cut -d, -f4`

if echo "$_ip" | grep -qE "^(10\.|100\.6[4-9]\.|100\.[7-9][0-9]\.|100\.1[01][0-9]\.|100\.12[0-7]\.|172\.1[6-9]\.|172\.2[0-9]\.|172\.3[01]\.)"; then
    [ -f "$counter" ] || echo "0" > $counter
    try_nr=$(cat $counter)
    try_nr=$((++try_nr))
    if [ $try_nr -gt $max_tries ]; then
        echo "0" > $counter
	logger -t white_ip[$$] "Provider: $_prov, interface: $_iface. Too much tries. Exit"
        exit
    fi
    echo "$try_nr" > $counter
    logger -t white_ip[$$] "Provider: $_prov, interface: $_iface. Reloading WAN due grey IP - $_ip. Try $try_nr of $max_tries."
    ndmq -p "interface $_iface no connect via $_via" -P message
    sleep 5
    ndmq -p "interface $_iface connect via $_via" -P message
else
    echo "0" > $counter
    [ -f "$previp" ] || echo "0.0.0.0" > $previp
    _previp=$(cat $previp)
    if [ "$_previp" != "$_ip" ]; then
        logger -t white_ip[$$] "Provider: $_prov, interface: $_iface, white IP - $_ip."
        echo "$_ip" > $previp
    fi
fi

Кроме установленного пакета ndmq требуется также xmlstarlet. В переменной $ConnName (2-я строка) замените название подключения на свое - так, как оно названо у вас в web-интерфейсе. Больше ничего указывать не нужно. Подключений может быть несколько, скрипт обрабатывает только подключение с указанным названием в случае его использования в качестве основного. Расположение обычное: /opt/etc/ndm/wan.d/.

Edited by Geont
  • Thanks 3
  • Upvote 1
Link to comment
Share on other sites

@Geont, это у вас точно работает?

ndmq -p 'interface $_iface no connect via $_via' -P message

Потому как в одинарных кавычках текст считается константой, в нём выражения и переменные не развёртываются, может лучше…

ndmq -p "interface $_iface no connect via $_via" -P message

 

Link to comment
Share on other sites

  • 1 year later...
В 28.02.2019 в 11:04, Geont сказал:

Немного обновил и причесал скрипт. Теперь работает стабильнее.

Кроме установленного пакета ndmq требуется также xmlstarlet. В переменной $ConnName (2-я строка) замените название подключения на свое - так, как оно названо у вас в web-интерфейсе. Больше ничего указывать не нужно. Подключений может быть несколько, скрипт обрабатывает только подключение с указанным названием в случае его использования в качестве основного. Расположение обычное: /opt/etc/ndm/wan.d/.

у меня что то не заработал:

Май 15 14:47:15
 
ndm
Opkg::Manager: /opt/etc/ndm/wan.d/010-rostel.sh: /opt/etc/ndm/wan.d/010-rostel.sh: line 75: syntax error: unexpected end of file (expecting "fi").
Май 15 14:47:15
 
ndm
Opkg::Manager: /opt/etc/ndm/wan.d/010-rostel.sh: exit code 2.
Link to comment
Share on other sites

  • 2 weeks later...
В 15.05.2020 в 14:53, K1fa сказал:

у меня что то не заработал:

Май 15 14:47:15
 
ndm
Opkg::Manager: /opt/etc/ndm/wan.d/010-rostel.sh: /opt/etc/ndm/wan.d/010-rostel.sh: line 75: syntax error: unexpected end of file (expecting "fi").
Май 15 14:47:15
 
ndm
Opkg::Manager: /opt/etc/ndm/wan.d/010-rostel.sh: exit code 2.

только что проверил. Все работает. У самого Ростелеком. В твоем случае проблема в кодировке и символах переноса строки. Прочитай полностью вторую страницу темы.

Link to comment
Share on other sites

  • 1 month later...

Приветствую всех, прошу не запинывать сразу тапками, новичок... 

Использовал скрипт Geont ,все замечательно работает, пытался к нему приладить кусочек отвечающий за нотификации через Telegram, спотыкается, куда копнуть? Кусочек просто вставил в конец скрипта, так нельзя?  

#!/opt/bin/sh

ConnName=Rostelecom
counter=/opt/tmp/CountReconnectWan.txt
previp=/opt/tmp/previp.txt
max_tries=10

LIST=`ndmq -p 'show interface' -x | xml sel -t -m '//interface[link="up"][state="up"][global="yes"][defaultgw="yes"]' -v '@name' -o ',' -v 'description' -o ',' -v 'address' -o ',' -v 'via' -n`
echo "$LIST" | grep -iwq "$ConnName" || exit 0

_ip=`echo "$LIST" | cut -d, -f3`
_prov=`echo "$LIST" | cut -d, -f2`
_iface=`echo "$LIST" | cut -d, -f1`
_via=`echo "$LIST" | cut -d, -f4`

if echo "$_ip" | grep -qE "^(10\.|100\.6[4-9]\.|100\.[7-9][0-9]\.|100\.1[01][0-9]\.|100\.12[0-7]\.|172\.1[6-9]\.|172\.2[0-9]\.|172\.3[01]\.)"; then
    [ -f "$counter" ] || echo "0" > $counter
    try_nr=$(cat $counter)
    try_nr=$((++try_nr))
    if [ $try_nr -gt $max_tries ]; then
        echo "0" > $counter
	logger -t white_ip[$$] "Provider: $_prov, interface: $_iface. Too much tries. Exit"
        exit
    fi
    echo "$try_nr" > $counter
    logger -t white_ip[$$] "Provider: $_prov, interface: $_iface. Reloading WAN due grey IP - $_ip. Try $try_nr of $max_tries."
    ndmq -p "interface $_iface no connect via $_via" -P message
    sleep 5
    ndmq -p "interface $_iface connect via $_via" -P message
else
    echo "0" > $counter
    [ -f "$previp" ] || echo "0.0.0.0" > $previp
    _previp=$(cat $previp)
    if [ "$_previp" != "$_ip" ]; then
        logger -t white_ip[$$] "Provider: $_prov, interface: $_iface, white IP - $_ip."
        echo "$_ip" > $previp
    fi
fi

   /opt/bin/tg_say.sh "Force reconnect to get real IP (try $try_nr of $max_tries)."
   echo "$try_nr" > $counter
   ndmq -p "no interface $interface connect"
   sleep 5  
   ndmq -p "interface $interface connect"
   echo '0' > $counter
fi

 

Link to comment
Share on other sites

  • 7 months later...
Фев 26 11:02:01 white_ip[809]
Provider: Rostelecom, interface: GigabitEthernet0/Vlan4. Reloading WAN due grey IP - 100.80.254.178. Try 2 of 10.
Фев 26 11:02:01 ndm
Core::Server: started Session /var/run/ndm.core.socket.
Фев 26 11:02:01 ndm
Command::Base: argument parse error.
Фев 26 11:02:01 ndm
Opkg::Manager: /opt/etc/ndm/wan.d/010-rostel.sh: Error: Command::Base: argument parse error.
Opkg::Manager: /opt/etc/ndm/wan.d/010-rostel.sh: exit code 34.

Подскажите, пожалуйста что ему не нравится?

Edited by Андрей Поздеев
Link to comment
Share on other sites

3 часа назад, Андрей Поздеев сказал:

Подскажите, пожалуйста что ему не нравится?

Стесняюсь спросить, а вы entware то установили?

Link to comment
Share on other sites

В 01.03.2021 в 09:47, Андрей Поздеев сказал:

Никто не подскажет решение? 

Попробуйте запустить скрипт вручную из консоли, так будет больше информации.

Link to comment
Share on other sites

11 hours ago, Geont said:

Попробуйте запустить скрипт вручную из консоли, так будет больше информации.

~ # /opt/etc/ndm/wan.d/010-rostel.sh
~ #

Консоль молчит....

В веб консоли:

ERROR: {
    "parse": {
        "prompt": "(config)",
        "status": [
            {
                "status": "error",
                "code": "7405600",
                "ident": "Command::Base",
                "source": "",
                "critical": "no",
                "message": "no such command: /opt/etc/ndm/wan.d/010-rostel.sh."
            }
        ]
    },
    "ndmErrors": {
        "parse.status.0": {
            "message": "no such command: /opt/etc/ndm/wan.d/010-rostel.sh.",
            "code": "7405600"
        }
    }
}

 

Edited by Андрей Поздеев
Link to comment
Share on other sites

Мар 11 08:36:21 ndm
Core::Server: started Session /var/run/ndm.core.socket.
Мар 11 08:36:21 ndm
Command::Base: argument parse error.
Мар 11 08:36:21 ndm
Opkg::Manager: /opt/etc/ndm/wan.d/white_ip.sh: Error: Command::Base: argument parse error.
Мар 11 08:36:21 ndm
Core::Session: client disconnected.
Мар 11 08:36:21 ndm
Opkg::Manager: /opt/etc/ndm/wan.d/white_ip.sh: exit code 34.

Неужели никто подсказать не может, что мне делать?

Link to comment
Share on other sites

2 часа назад, Андрей Поздеев сказал:

Неужели никто подсказать не может, что мне делать?

может глупость спрошу. а перевод в конце строк точно для линукса? я раньше это пользовал...01white-ip.sh.zip

Link to comment
Share on other sites

On 3/11/2021 at 1:36 PM, Goblin said:

может глупость спрошу. а перевод в конце строк точно для линукса? я раньше это пользовал...01white-ip.sh.zip

Точно. Если были бы пробелы и т.д то синтаксическая ошибка была если я не ошибаюсь.

Link to comment
Share on other sites

  • 5 months later...
В 12.09.2021 в 14:56, Rezdbic сказал:

В новых версиях Entware ныне ndmq больше не доступен. У кого-нибудь есть скрипт без использования ndmq?

Можно ndmq установить отсюда.

Link to comment
Share on other sites

Скрипт, работающий на REST API

#!/opt/bin/sh

ConnName=Rostelecom
counter=/opt/tmp/CountReconnectWan.txt
previp=/opt/tmp/previp.txt
max_tries=10

if ! opkg list-installed | grep '^jq' > /dev/null; then
	opkg update
	opkg install jq
fi

RESP=$(wget -qO - http://localhost:79/rci/show/interface | jq -r ".[] | select(.description==\"$ConnName\") | select(.defaultgw==true) | .id, .description, .address")
[ -n "$RESP" ] || exit 1

_ip=$(echo $RESP | awk '{print $3}')
_name=$(echo $RESP | awk '{print $2}')
_iface=$(echo $RESP | awk '{print $1}')

if echo "$_ip" | grep -qE "^(10\.|100\.6[4-9]\.|100\.[7-9][0-9]\.|100\.1[01][0-9]\.|100\.12[0-7]\.|172\.1[6-9]\.|172\.2[0-9]\.|172\.3[01]\.)"; then
    [ -f "$counter" ] || echo "0" > $counter
    try_nr=$(cat $counter)
    try_nr=$((++try_nr))
    if [ $try_nr -gt $max_tries ]; then
        echo "0" > $counter
		logger -p local0.error -t white_ip[$$] "Provider: $_name, interface: $_iface. Too much tries. Exit"
        exit 1
    fi
    echo "$try_nr" > $counter
    logger -p local0.error -t white_ip[$$] "Provider: $_name, interface: $_iface. Reloading WAN due grey IP - $_ip. Try $try_nr of $max_tries."
	wget -qO - --post-data="[{\"interface\":{\"name\":\"$_iface\",\"down\":{}}}]" http://localhost:79/rci/
    sleep 3
    wget -qO - --post-data="[{\"interface\":{\"name\":\"$_iface\",\"up\":{}}}]" http://localhost:79/rci/
else
    echo "0" > $counter
    [ -f "$previp" ] || echo "0.0.0.0" > $previp
    _previp=$(cat $previp)
    if [ "$_previp" != "$_ip" ]; then
        logger -p local0.notice -t white_ip[$$] "Provider: $_name, interface: $_iface, white IP - $_ip."
        echo "$_ip" > $previp
	else
		logger -p local0.notice -t white_ip[$$] "Provider: $_name, interface: $_iface, white IP - $_ip (address unchanged)."
    fi
	exit 0
fi

Для работы нужен пакет jq (будет установлен при первом запуске скрипта). Не забудьте поменять название подключения РТ в 3 строке на то, как оно названо в веб-интерфейсе.

  • Thanks 2
  • Upvote 3
Link to comment
Share on other sites

Добрый день, я новичок, в скриптах не шарю, KN2010. Суть проблемы, провайдер выделяет динамический IP ,на некоторых IP одной подсети высокий пинг, есть ли такой скрипт, чтобы роутер при подключении к интернету отклонял не нужный мне определённый диапазон IP адресов? Огромная просьба если не затруднит, рассказать подробно ,что нужно установить и где прописать диапазон IP адресов.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...