Jump to content
Khaninea

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

Recommended Posts

Использую скрипт тов. S_A

В журнале теперь такая ошибка:

Jul 27 11:27:59ndm  Opkg::Manager: /opt/etc/ndm/wan.d/white_ip.sh: /opt/etc/ndm/wan.d/white_ip.sh: line 29: syntax error: unexpected end of file (expecting "fi").
Jul 27 11:27:59ndm  Opkg::Manager: /opt/etc/ndm/wan.d/white_ip.sh: exit code 2
Bash совсем не знаю. Что ему не хватает?

Share this post


Link to post
Share on other sites

Ясно, интересует выбранное имя скрипта, а не имя папки. Имя может быть произвольное. Я пробовал называть скрипты 001-xxx.sh, 002-yyy.sh и т.д., пытаясь добиться их последовательного исполнения, но в момент проведение эксперимента скрипты выполнялись в произвольном порядке.

7 минут назад, Rezdbic сказал:
Bash совсем не знаю. Что ему не хватает?

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

 

Edited by Александр Рыжов

Share this post


Link to post
Share on other sites

Предлагаете мне выучить Bash?)) Спасибо, я лет 5 назад пробовал это сделать, ни чего не вышло, не понимаю я этого... ((

Share this post


Link to post
Share on other sites

@Rezdbic, никто не заинтересован в решении _вашей_ проблемы больше _вас_ самих.

И тем более, никто не станет вести безвозмездные курсы bash'а. Попробуйте перевести сообщение об ошибке в переводчике.

Share this post


Link to post
Share on other sites

Это и без переводчика понятно:

линия 29: синтаксическая ошибка: неожиданный конец файла (ожидается "f")

 

8 минут назад, Khaninea сказал:

Убери пустые строки, после предпоследнего fi поставь ";"

убрал, поставил... точно такая же ошибка, но в линии 20

Share this post


Link to post
Share on other sites

Очень жалко, что уважаемые кураторы форума болеют звездной болезнью. Сам очень долго мучался, чтоб настроить скрипт. В итоге выкладываю рабочий вариант. Также у меня настроена нотификация через email посредством msmtp (есть соответсвующая тема на форумах). Mymail@mail.ru это пример, свой адрес не указываю по понятным причинам. Если уведомления не нужны, просто закомментируйте соответсвующие строчки.

010-rostel.sh

  • Thanks 2

Share this post


Link to post
Share on other sites

Тут уже кто-то писал про if-fi,потом удалил сообщение. Насколько помню, проблема была в виндовых окончаниях строк. Проверьте не попали ли у вас 0x0d или другие спец символы в скрипт. Можно для начала просто через dos2unix конвертнуть.

Edited by S_A

Share this post


Link to post
Share on other sites

По-моему все-таки не вы (месяц назад дело было, не помню).

Да и поделились бы своим решением для других. Т.к. у меня например, скрипт успешно работает именно в том виде как я его выложил.

Share this post


Link to post
Share on other sites

Кстати, к Вам как к автору скрипта есть вопрос ) Зачем в конце скрипта стоят две закомментированные строки?

 #sleep 1
   #ndmq -p 'interface PPPoE0 dyndns update force' -P message

 

Share this post


Link to post
Share on other sites

Ну очевидно же :) , сначала добавил форсированный апдейт полученного IP в dyndns, потом проверил что роутер все-таки пошлет его сам после включения сервиса dyndns и закоментировал.

Хотя кто-то с 2.07 жаловался что после включения апдейт не шлется. Вот в такой ситуации можно раскоментировать.

Share this post


Link to post
Share on other sites

Апдейт шлется где-то через пару минут. А если раскоментировать строку, то тогда вообще нет смысла сначала выключать, а потом включать dyndns, т.к. ip будет отсылаться после каждого сброса, в т.ч. и неудачного

Share this post


Link to post
Share on other sites

3 минуты назад, Khaninea сказал:

Апдейт шлется где-то через пару минут

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

Share this post


Link to post
Share on other sites

У меня была ошибка (expecting "fi")  проблема оказалась в кодировке. Нужно было файл сохранять не в формате win-1251, а в формате unix-1251. Вот скрипт S_A нормально работающий у меня. Только у меня серая подсеть начинается на 172

white-ip.sh

Edited by SoNick

Share this post


Link to post
Share on other sites

Различия в формате: win-1251, unix-1251 заключается в кодах перехода на новую строку. У виндовс 0Dh, 0Ah, а у unix только 0Ah. Я редактировал скрипт в текстовом редакторе Total Commander ( по кнопке F4). Там в меню "Правка"->"Формат новой строки" выбрал "Unix (0Ah)" и работал с редактором как обычно. Или как вариант использовать конвертер dos2unix  как писал S_A.

Share this post


Link to post
Share on other sites

@SoNick в Total Commander'e нет встроенного текстового редактора. По умолчанию на кнопке F4 висит виндовый Блокнот, а у него нет выбора кодировок.

Какой редактор у вас привязан к F4?

Посмотреть можно так: Конфигурация-Настройка-Правка/Просмотр

Edited by Fandor

Share this post


Link to post
Share on other sites

Notepad++!
Дня два вспоминал как называется этот мега удобный редактор!))
Только не понятно какаю кодировку там использовать?  Формат новой строки поставил Unix.
А кодировку какую выбрать?

notepad++.jpg

Share this post


Link to post
Share on other sites

Господа пользователи Entware!

Предлагаю Вам начать использовать редакторы из состава Entware - их много разных и удобных. Для копирования в буффер обмена (в putty) достаточно выделить текст мышкой (в mcedit с клавишой Shift). Для вставки текста - клик правой кнопкой (в mcedit с клавишой Shift). Концы строк - нужные. Кому нужны разные кодировки - в mcedit выбираете по Alt-e.

1. mcedit - входит в состав mc, вызывается из mc клавишей F4 или `mcedit <файл>`

2. nano - очень удачная подсветка синтаксиса. Корректнее, чем (1) работает с буфером обмена. F3 - сохранение файла, Ctrl-X - выход. Остальное - см. встроенный Help.

3. joe

4. vim

5. vi (уже установлен)

 

Edited by zyxmon
  • Thanks 1

Share this post


Link to post
Share on other sites

Так как спрашивают в личку, напишу еще и в тему, может пригодится.

Q: как сделать проверку на несколько адресов серых подсетей?

A: меняем строки поска grep и условие в 'if' на инверсные, добавив нужные проверки. Т.е меняем две строчки (в примере серые подсети: '100.x.y.z' и '80.1.x.y'):

_ip=$(echo $address | grep -v "^100\." | grep -v "^80\.1\.")
if [ -z "$_ip" ]; then

 

  • Thanks 2

Share this post


Link to post
Share on other sites

в связи с возникшей необходимостью был модифицирован скрипт S_A и благодаря его же неоценимой помощи. Данная модификация позволяет отсекать не одну серую подсеть, а столько сколько удасться выявить и прописать. Перед употреблением, необходимо отредактировать серые подсети под свой регион. Редактировать рекомендую в  mcedit. Под виндой в Notepad++ лично у меня нормально отредактировать не получилось.

white-ip.sh

Edited by Dintra

Share this post


Link to post
Share on other sites

Странно, на Giga II этот скрипт почему-то не работает..

Command::Base: argument parse error.

Opkg::Manager: /opt/etc/ndm/wan.d/white-ip (1).sh: Error: Command::Base: argument parse error.

Кто подскажет на что он ругается? Прошивка  v2.08(AAFS.3)A8.

Share this post


Link to post
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.



  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...