Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

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

 

Опубликовано

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

Опубликовано

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

  • 3 месяца спустя...
  • 1 год спустя...
Опубликовано
В 03.11.2016 в 06:52, VVJ сказал:

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

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

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

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

Опубликовано

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

  • 1 месяц спустя...
Опубликовано (изменено)

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

#!/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 - завершить скрипт, чё ему надо?

Изменено пользователем Quadro Rover
  • 2 недели спустя...
Опубликовано
В ‎4‎/‎10‎/‎2018 в 10:59, Tammy сказал:

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

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

Опубликовано (изменено)
45 минут назад, VVJ сказал:

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

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

Изменено пользователем Goblin
  • 9 месяцев спустя...
Опубликовано (изменено)

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

#!/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/.

Изменено пользователем Geont
Опубликовано

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

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

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

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

 

Опубликовано (изменено)
7 часов назад, Александр Рыжов сказал:

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

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

Изменено пользователем Geont
  • 1 год спустя...
Опубликовано
В 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 недели спустя...
Опубликовано
В 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 месяц спустя...
Опубликовано

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

Использовал скрипт 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 месяцев спустя...
Опубликовано (изменено)
Фев 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.

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

Изменено пользователем Андрей Поздеев
Опубликовано
3 часа назад, Андрей Поздеев сказал:

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

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

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

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

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

Опубликовано (изменено)
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"
        }
    }
}

 

Изменено пользователем Андрей Поздеев
Опубликовано
Мар 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.

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

Опубликовано
2 часа назад, Андрей Поздеев сказал:

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

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

Опубликовано
On 3/11/2021 at 1:36 PM, Goblin said:

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

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

  • 5 месяцев спустя...
Опубликовано
В 12.09.2021 в 14:56, Rezdbic сказал:

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

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

Опубликовано

Скрипт, работающий на 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 строке на то, как оно названо в веб-интерфейсе.

Опубликовано

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.