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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Автозапуск DVB интерфейса  (Прочитано 2330 раз)

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

Оффлайн Beard

  • Автор темы
  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Автозапуск DVB интерфейса
« : 14 Апреля 2009, 09:29:18 »
На предыдущей версии Ubuntu 8.10 у меня был настроен спутниковый интернет через СкайСтар3 на Радуге. Т.е все работало без проблем. Перейдя на 9.04 скрипт перестал работать и приходится вручную поднимать интерфейс. Вот файл /etc/network/interfaces и его содержание
Цитата
auto lo
iface lo inet loopback
auto dvb0_0
   iface dvb0_0 inet manual
   pre-up sh -c '/usr/bin/dvbnet -a 0 -p 500 > /dev/null'
   ifconfig dvb0_0 172.18.xx.xx hw ether 00:00:AC:12:xx:xx netmask 255.255.255.0 up
   up sh -c 'echo 0 > /proc/sys/net/ipv4/conf/dvb0_0/rp_filter'
   up sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
   up sh -c '/usr/bin/szap -c /etc/channels.conf -n 1 -x -l 5150,5150,0'
   down ifconfig $IFACE down
   down /usr/bin/dvbnet -d 0
В свойствах файла установил права "Запускать файл как программу", но не помогло, и каждый раз при запуске интернета приходится в терминале вводить
Цитата
$ sudo ifconfig dvb0_0 172.18.xx.xx hw ether 00:00:AC:12:xx:xx netmask 255.255.255.0 up
Как это можно исправить?

Оффлайн kobaltd

  • Активист
  • *
  • Сообщений: 273
    • Просмотр профиля
Re: Автозапуск DVB интерфейса
« Ответ #1 : 15 Апреля 2009, 16:55:09 »
ну хотябы для начала к sh добавить полный путь до него (самая распрастранненная ошибка для скриптов запускаемых без переменных пользователя - ос не знает где найти этот SH так как обычно где искать инициализируеться переменной пользователя, что произойдет только после его входа в систему)

Оффлайн Beard

  • Автор темы
  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: Автозапуск DVB интерфейса
« Ответ #2 : 16 Апреля 2009, 18:31:13 »
Я, конечно, не буду оспаривать, ибо полный дилетант в Linuxе, но это готовая команда, которая работает у многих пользователей, в том числе и у меня на предыдущей версии Ubuntu. Похоже, что система либо не видит интерфейса, либо надо мудрить чего с правами (простой заменой владельца с roota на себя проблема не решилась). И еще, почему команду ifconfig dvb0_0 172.18.xx.xx hw ether 00:00:AC:12:xx:xx netmask 255.255.255.0 up можно запускать только от суперпользователя, если от простого пользователя, то вылазит ошибка?

Оффлайн Tokh

  • Активист
  • *
  • Сообщений: 705
    • Просмотр профиля
Re: Автозапуск DVB интерфейса
« Ответ #3 : 16 Апреля 2009, 21:32:27 »
почему команду ifconfig dvb0_0 172.18.xx.xx hw ether 00:00:AC:12:xx:xx netmask 255.255.255.0 up можно запускать только от суперпользователя, если от простого пользователя, то вылазит ошибка?

В любой современной операционной системе нельзя без администраторских привилегий изменять сетевые адреса. В Linux админский логин только один - root. В тоже время считается правильным работать без администраторских прав. В Вин последнее не реализовано "из коробки", что служит источником многочисленных вирусных проблем пользователя.

Бесполезно файлу /etc/network/interfaces присваивать атрибут "исполняемый". Этот файл не запускается, этот файл анализируется другими программами. Некоторые программы в Linux могут не запустится, если их файлы конфигурации или иные объекты имею слишком широкие для пользователя права доступа. Не знаю имеет ли это значение для /etc/network/interfaces , но помнить об этом стоило бы.

$ sudo ifconfig dvb0_0 172.18.xx.xx hw ether 00:00:AC:12:xx:xx netmask 255.255.255.0 up
это единственное что после загрузки нужно выполнить для "включения" интернета?

Cтрока ifconfig dvb0_0 172.18.xx.xx hw ether 00:00:AC:12:xx:xx netmask 255.255.255.0 up
файла /etc/network/interfaces
должна быть предварена тегом up?

Неясна роль пакета network-manager, он плохо сочетается с ручными настройками. Но это так, ничего конкретного, фантазирую на тему возможных причин... :)

P.S. Команда man interfaces описывает этот файл, но там не по русски. Перевод возможно есть в инете.
« Последнее редактирование: 16 Апреля 2009, 21:41:55 от u-375 »
StarDict и Mueller помогут против английского мануала.

Оффлайн Beard

  • Автор темы
  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: Автозапуск DVB интерфейса
« Ответ #4 : 17 Апреля 2009, 00:01:01 »
Цитировать
$ sudo ifconfig dvb0_0 172.18.xx.xx hw ether 00:00:AC:12:xx:xx netmask 255.255.255.0 up
это единственное что после загрузки нужно выполнить для "включения" интернета?
Чаще всего так, но иногда еще приходится и такую команду запускать:
Цитировать
sudo szap -c /etc/channels.conf -n 1 -x -l 5150,5150,0
, если сигнал не залочился при запуске.

Оффлайн Tokh

  • Активист
  • *
  • Сообщений: 705
    • Просмотр профиля
Re: Автозапуск DVB интерфейса
« Ответ #5 : 17 Апреля 2009, 18:43:56 »
Рискну утверждать, что в /etc/network/interfaces
вместо
ifconfig dvb0_0 172.18.xx.xx hw ether 00:00:AC:12:xx:xx netmask 255.255.255.0 up
надо сделать
up ifconfig dvb0_0 172.18.xx.xx hw ether 00:00:AC:12:xx:xx netmask 255.255.255.0 up
Или так:
up sh -c 'ifconfig dvb0_0 172.18.xx.xx hw ether 00:00:AC:12:xx:xx netmask 255.255.255.0 up'

Поскольку
man interfaces | grep ifconfigне выдаёт результата, то ifconfig это отдельно запускаемая, известная и стандартная утилита, а не специальная инструкция-тег. Запуск утилит в /etc/network/interfaces возможен при использовании тега up. Нет тега - и не работает. Я так думаю.

Когда станет понятно со строчкой про ifconfig, можно поразбираться со строчкой про szap.

Не знаю как проверяется залочился или нет сигнал при запуске. По всей видимости этот (сабжевый) способ подключения автоматизирован недостаточно и надо
/usr/bin/szap -c /etc/channels.conf -n 1 -x -l 5150,5150,0запускать несколько раз, до тех пор пока "не наступит нужное". В цикле анализировать результат каждого запуска szap, пока не наступит успех. Если есть утилита, которая выдаёт в консоли всегда одинаковый текст при удавшейся залочке, а при неудачной залочке не выдаёт этого текста или выдаёт другой, но тоже всегда одинаковый текст, то могу попытаться написать скриптик. Но не смогу отладить у себя...
Вместо такого текста можно анализировать значение возвращаемое утилитой szap по окончании работы, но понятия не имею что возвращает szap, есть ли однозначная связь этого значения с залочкой. И ещё вариант придумал  :) - можно просто проверять "пингуемость" и по результататам перезапускать сеть.

Если внутрь  файла ping-catch.sh записать код, что за спойлером
(Нажмите, чтобы показать/скрыть)
И сделать
chmod +x ping-catch.shТо при запуске ping-catch.sh будет проверено наличие хоть какого пинга до сервера TEST_SERVER_ADDRESS в течении количества секунд равного PING_TIME_OUT.

Если пинг был, то скрипт прервётся.
Если пинга не было, будет сделан "перезапуск сети" и повторная попытка пинга, число попыток перезапуска равно MAXIMUM_RESTART_COUNTER_VALUE.

Запуск ping-catch.sh можно вписать в /etc/rc.local
Он запускается при загрузке, после всех системных скриптов инициализации, команды оттуда запускаются от имени рута и ввод пароля не потребуется.
В теории надо у пользователей отобрать права на изменение ping-catch.sh, но это уже заморочка для админов на работе.

P.S. Если "не лочится" редко, то может быть проще делать
sudo /etc/init.d/networking restartчем писать скрипт.
/etc/init.d/networking это скрипт который запускает всё нужное для включения сетевых интерфейсов, обычно у него используются параметры start, stop и restart.

« Последнее редактирование: 17 Апреля 2009, 18:48:19 от u-375 »
StarDict и Mueller помогут против английского мануала.

Оффлайн Beard

  • Автор темы
  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: Автозапуск DVB интерфейса
« Ответ #6 : 18 Апреля 2009, 17:58:33 »
После ввода команды sudo /etc/init.d/networking restart сигнал лочится, но интерфейс сваливается и приходится опять поднимать  sudo ifconfig dvb0_0 172.18.xx.xx hw ether 00:00:AC:12:xx:xx netmask 255.255.255.0 up.
А может добавить эту команду в cron или Sheduled tasks? только не знаю как правильно записать от рута, и чтобы запускалась при перезагрузке или запуске компа.

Оффлайн Tokh

  • Активист
  • *
  • Сообщений: 705
    • Просмотр профиля
Re: Автозапуск DVB интерфейса
« Ответ #7 : 18 Апреля 2009, 20:30:46 »
После ввода команды sudo /etc/init.d/networking restart сигнал лочится, но интерфейс сваливается и приходится опять поднимать  sudo ifconfig dvb0_0 172.18.xx.xx hw ether 00:00:AC:12:xx:xx netmask 255.255.255.0 up.

Был ли изменён /etc/network/interfaces ?
Эта конфигурация раньше работала, но не понятно как. Может это была (но может и не была) убранная теперь баго-фича.

У Вас в конфиге прямое указание
iface dvb0_0 inet manual
о том, что интерфейс будет сконфигурирован вручную.
См. man interfaces | grep "The manual Method" -C 1 -A 7И после этого нет допустимых по синтаксису инструкций конфигурирующих интерфейс. Вот он и оказывается "down", т.к. ничто не делает ему "up". Есть одна инструкция "ifconfig ...", но по мануалу она должна быть оформлена иначе. Не задумано чтобы в этом месте можно было вписывать "прямые" комманды для shell. Это конфигурация, а не скрипт. И пока все признаки того, что не срабатывает только "ifconfig ...".

Цитировать
А может добавить эту команду в cron или Sheduled tasks? только не знаю как правильно записать от рута, и чтобы запускалась при перезагрузке или запуске компа.

Команду можно вставить в /etc/rc.local. Этот скрипт выполняется при загрузке, выполняется от имени рута (значит sudo не надо прибавлять), когда уже были завершены все остальные инициализации.
Строго _не_после_ строки "exit 0". :)

Записанное в cron будет запускаться от имени указанного там пользователя по времени. Параметра "запустить при включении компа" там нет. Это запуски только по времени, а не "по событию". Туда имеет смысл вписывать разные проверки доступности и т.п. Если там поставить ifconfig, то регулярно будет пересбрасывать связь. :)
« Последнее редактирование: 18 Апреля 2009, 20:52:42 от u-375 »
StarDict и Mueller помогут против английского мануала.

Оффлайн Beard

  • Автор темы
  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: Автозапуск DVB интерфейса
« Ответ #8 : 19 Апреля 2009, 02:58:52 »
Интернет настраивал, главным образом, по этому http://www.opennet.ru/tips/info/1833.shtml мануалу. За исключением что у меня С диапазон и Спринт.
Цитировать
Был ли изменён /etc/network/interfaces ?
Да,пробовал менять выдает ошибку типа: неизвестная команда up
/etc/rc.local в Ubuntu 9.04 я не нашел... есть: rc0.d, rc1.d и т.д.


Пользователь решил продолжить мысль 19 Апреля 2009, 07:12:15:
Проблема решена: содержание файла должно быть таким, auto dvb0_0
iface dvb0_0 inet manual
pre-up sh -c '/usr/bin/dvbnet -a 0 -p YOUR PID > /dev/null'
up ifconfig $IFACE hw ether 00:00:AC:хх:хх:хх 172.хх.хх.ххх netmask 255.255.255.0 up
up sh -c 'echo 0 > /proc/sys/net/ipv4/conf/dvb0_0/rp_filter'
up sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
up sh -c '/usr/bin/szap -c /etc/channels.conf -n 1 -x -l 5150,5150,0'
down ifconfig $IFACE down
down /usr/bin/dvbnet -d 0
Решние подсказал пользователь monk http://ubuntologia.ru/forum/memberlist.php?mode=viewprofile&u=394
« Последнее редактирование: 19 Апреля 2009, 07:12:15 от Beard »

 

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