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

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

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

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

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

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

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

 

Изменено пользователем Александр Рыжов
Опубликовано

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

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

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

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

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

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

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

 

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

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

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

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

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

010-rostel.sh

Опубликовано (изменено)

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

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

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

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

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

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

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

 

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

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

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

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

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

Опубликовано
3 минуты назад, Khaninea сказал:

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

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

Опубликовано (изменено)

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

white-ip.sh

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

Простите за нубство, но чем и как сохранить файл в формате unix-1251?

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

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

Опубликовано (изменено)

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

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

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

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

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

notepad++.jpg

Опубликовано (изменено)

Господа пользователи 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 (уже установлен)

 

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

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

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

 

Опубликовано (изменено)

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

white-ip.sh

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

Странно, на 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.

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

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

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

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

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

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

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

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

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

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

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

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