Jump to content

Recommended Posts

Posted

Поставил 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

 

Posted

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

Posted

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

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

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

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

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

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

Posted

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

  • 1 month later...
Posted (edited)

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

#!/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
  • 2 weeks later...
Posted
В ‎4‎/‎10‎/‎2018 в 10:59, Tammy сказал:

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

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

Posted (edited)
45 минут назад, VVJ сказал:

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

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

Edited by Goblin
  • 9 months later...
Posted (edited)

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

#!/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 4
  • Upvote 1
Posted

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

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

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

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

 

Posted (edited)
7 часов назад, Александр Рыжов сказал:

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

Да, ошибка. Исправил.
 

Edited by Geont
  • 1 year later...
Posted
В 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.
  • 2 weeks later...
Posted
В 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.

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

  • 1 month later...
Posted

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

Использовал скрипт 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

 

  • 7 months later...
Posted (edited)
Фев 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 Андрей Поздеев
Posted
3 часа назад, Андрей Поздеев сказал:

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

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

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

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

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

Posted (edited)
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 Андрей Поздеев
Posted
Мар 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.

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

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

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

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

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

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

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

  • 5 months later...
Posted

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

Posted
В 12.09.2021 в 14:56, Rezdbic сказал:

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

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

Posted

Скрипт, работающий на 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 4
  • Upvote 4
  • 3 months later...
Posted

В теме описывается управление интерфейсами через ndmq.

А нельзя ли для этого использовать утилиту ip?

ip link set dev ppp0 up/down

Или тут другой механизм и он хуже?

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.

  • Recently Browsing   0 members

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

Important Information

This site uses cookies. By clicking "I accept" or continuing to browse the site, you authorize their use in accordance with the Privacy Policy.