Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Скрипт автоматического обновления ddns и автоподключения  (Прочитано 2232 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pe4enbk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Здравствуйте!
Сомневался, в какой раздел писать, решил сюда.
Имеем:
Скрипт rec_beeline:
(Нажмите, чтобы показать/скрыть)
Он стоит по крону и дергается раз в минуту. Обратите внимание на строку 17. Этот скрипт вот:
(Нажмите, чтобы показать/скрыть)

Проблема:
Когда скрипт дергается по крону - то, дергая обновлялку ДНС в случае, если изменился IP-этот измененный IP не пишется в dnsactual.conf. То есть вообще.
При этом, если сделать ./afraid - то новый адрес записывается в файл, даже без sudo.
Я и 777 на конфиг ставил, и sudo на дерганье - ни фига, не пишет. Все остальное работает, это нет.
Где я ошибся?


Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Зачем в скрипте, выполняющемся от рута - sudo?...
Нафига делать "echo > /dev/null" ?
Чем вообще не устаривает стандратный механизм поддержания соединения, сто лет встроенный в PPTP протокол?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн pe4enbk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
/dev/null остался с того времени, когда там действий не было, а что то писать нужно, можно и убрать
sudo - акт беспомощности, "авось сработает".
Какой же механизм? Сами мы люди темные.. У меня L2TP, если что.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
LCP echo
В L2TP тоже есть.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн pe4enbk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Первая строка непонятна - это и не команда, и ничего.
В любом случае - мой велосипедик неплохо ездит, свои задачи выполняет+не думаю, что в стандартном решении можно прикрутить ddns обновлялку.
Вопрос то в другом - почему не выполняется echo $CurreIP > dnsactual.conf , хотя при ручном запуске все ок, да и echo `date`  "Updating log with IP " $CurreIP >> $UPD_LOG отрабатывает

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Это не команда, это встроенная функция протокола. В L2TP, на сколько мне известно, является обязательной. В переводе на русский - ваш скрипт бессмысленен и бесполезен.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн pe4enbk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Гуглеж дал только ссылки на 2008-2009 год, и вообще не по теме. Есть опыт использования/годные мануалы?
Хотя, вспоминая гуй, подозреваю, что неработающая галочка в НМ "Подключаться автоматически" - это оно и есть..
Предлагаю поиграть в психологическую игру - представьте, что я не выкладывал первый скрипт. Его нет. Просто нет. Вы засыпаете.
Представили?
А теперь попробуйте ответить на вопрос - почему при дерганье одного скрипта другим не отрабатывает одна строка, тогда как соседняя, практически идентичная, отрабатывает? М?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Давайте начнём сначала - какого результата вы хотите добиться?
Чтобы обновлялся IP в DDNS?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн pe4enbk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Ну вот смотрите, схема работы
Крон дергает скрипт - > скрипт дергает обновлялку - > обновлялка смотрит, соответствует ли реальный ip тому, который помнит она(dnsactual.conf) - > если нет, то обновляет днс, пишет в лог, и запоминает новый ip в файл dnsactual.conf
Последний пункт - не работает. То есть новый адрес не пишется, хотя если запустить скрипт вручную - все работает отлично.
Права ок, идентичны файлу лога(router:router,666).

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Начать с того, что раз уж вы используете NM для управления соединениями, то и адрес соединения надо искать через него.
Ну и вообще куча глупостей... проще переделать всё заново.

#! /bin/sh
UPD_URL=http://freedns.afraid.org/dynamic/update.php?***

. /etc/default/afraiddns

test -z "$CONNAME" && {
  logger -st "afraiddns[$$]" -- "Please fill in the CONNAME variable in the /etc/default/afraiddns"
  exit 2
}
test -d /var/lib/afraiddns || mkdir /var/lib/afraiddns

# Disable idiotic translations
LANG=en_US
export LANG

CURRIP=$( nmcli --terse --fields IP con status id "$CONNAME" | grep "4\.ADDRESS" | awk '{ IP = $3; FS="/"; $0 = IP; print $1 }' )
LASTIP=$( cat /var/lib/afraiddns/lastip )
if [ "$CURRIP" != "$LASTIP" ]; then
  RESPONCE=$( wget -O "${UPD_URL}${CURRIP}" )
  if [ $? != 0 ]; then
    logger -st "afraiddns[$$]" -- "Unable to update DNS records"
  else
    logger -st "afraiddns[$$]" -- "$RESPONCE"
    echo $CURRIP > /var/lib/afraiddns/lastip || logger -st "afraiddns[$$]" -- "Unable to update saved IP address"
  fi
fi
« Последнее редактирование: 15 Сентября 2013, 07:37:15 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн pe4enbk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Красиво.. Но непонятно. Да и айпишник внутренней сети выдает, вместо внешнего от ppp0 соединения, хотя это поправить недолго.
Все же вопрос был не в оценке моего скрипта, а в том, отчего может возникать странная незапись в файл.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Простите, а вы имя какого соединения вписали в /etc/default/afraiddns ?
Ваш же скрипт мне даже комментировать не хочется, тем более - тратить время на объяснение всех возможных проблем.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн pe4enbk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Ну так прокомментируйте свой!
Имя соединения верное, и скрипт отдает IP внутренней сети этого ссоединение(eth0), а не ppp0.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Интересно.
Покажите вывод
LANG=C nmcli --terse --fields IP con status id ваше_соединение_с_инетом
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн pe4enbk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Четсно говоря не хотел бы, ибо адриски, но точно могу сказать, что внешнего IP там нет. А в греппеной строке как раз таки внутренний(что логично)

Пользователь решил продолжить мысль 27 Сентября 2013, 21:01:30:
Кстати говоря, чем вариант ифконфига плох?
NM костыль же лютый, если бы не L2TP - стояла бы у меня серверная версия, без него..
« Последнее редактирование: 27 Сентября 2013, 21:01:30 от pe4enbk »

 

Страница сгенерирована за 0.032 секунд. Запросов: 25.