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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Автозагрузка скрипта через Upstart  (Прочитано 8397 раз)

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

Оффлайн ikuchmin

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Автозагрузка скрипта через Upstart
« : 20 Сентября 2008, 14:56:37 »
Воопщем пишу сюда так как проблема связана с утилитами ip и pptp
Необходимо при старте системы выполнять следующий скрипт
# rc3 - runlevel 3 compatibility
#
# This task runs the old sysv-rc runlevel 3 (user defined) scripts.  It
# is usually started by the telinit compatibility wrapper.

start on runlevel 3

stop on runlevel [!3]
console output
script
ip route add 213.178.32.0/255.255.224.0 via 10.1.141.1
ip route add 81.28.160.0/255.255.224.0 via 10.1.141.1
ip route add 85.114.160.0/255.255.224.0 via 10.1.141.1
ip route add 62.106.96.0/255.255.224.0 via 10.1.141.1
ip route add 172.16.0.0/255.240.0.0 via 10.1.141.1
ip route add 10.0.0.0/255.0.0.0 via 10.1.141.1
ip route add 213.180.192.0/255.255.224.0 via 10.1.141.1
ip route add 77.88.0.0/255.255.192.0 via 10.1.141.1
ip route add 87.250.224.0/255.255.224.0 via 10.1.141.1
ip route add 93.158.128.0/255.255.192.0 via 10.1.141.1
ip route add 192.168.0.1 via 10.1.141.1
ip route add 192.168.0.2 via 10.1.141.1
ip route add 81.28.160.1 via 10.1.141.1
ip route add 81.28.160.111 via 10.1.141.1
ip route del default
pppd call aistnet
end script
делал по оброзу и подобию скрипта /etc/event.d/rc3
при запуске Linux ничего не происходит если же выполнять  через start <имя скрипта>  все нормально, все стартует
Плиз помогите все перепробовал

В случае со start запускал из под рута
« Последнее редактирование: 20 Сентября 2008, 15:01:23 от ikuchmin »

Оффлайн Otetz

  • Активист
  • *
  • Сообщений: 455
    • Просмотр профиля
Re: Автозагрузка скрипта через Upstart
« Ответ #1 : 20 Сентября 2008, 15:01:48 »
Запускай скрипт через /etc/rc.local

Скрипт (допустим, называется netw) помести в папку /bin добавь ему прав на запуск. Потом в /etc/rc.local пишешь (до строки exit 0) netw
И всё будет в шоколаде.

ЗЫ, скрипт придётся немного изменить.
Anything, that MAY go wrong, WILL go wrong...

Оффлайн ikuchmin

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Автозагрузка скрипта через Upstart
« Ответ #2 : 20 Сентября 2008, 15:11:33 »
Вся проблема в том что скрип rc.local запускается последним и у него не будет достаточно прав для выполнения команд в скрипте а sudo использовать не охота так как придется каждый раз вводить пароль и еще
хотелось бы именно через upstart ведбь незря над ним столько работали

Оффлайн ziv

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
Re: Автозагрузка скрипта через Upstart
« Ответ #3 : 20 Сентября 2008, 15:51:01 »

tartan

  • Гость
Re: Автозагрузка скрипта через Upstart
« Ответ #4 : 20 Сентября 2008, 16:24:02 »
У меня на ubuntu server route прикручен именно в rc.local, и iptables ещё. То, что прописано в rc.local, выполняется от рута.

Оффлайн ikuchmin

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Автозагрузка скрипта через Upstart
« Ответ #5 : 20 Сентября 2008, 17:57:09 »
Добавлять в rc.local пробовал ничего не получается команды в моем  скрипте не срабатывают, пробовал два варианта
писать
первый: /bin/bash "/etc/init.d/<name script>"
без "<>"
второй: /etc/init.d/<name script>
и скрипт выглядил так:
#!/bin/bash
ip route add 213.178.32.0/255.255.224.0 via 10.1.141.1
ip route add 81.28.160.0/255.255.224.0 via 10.1.141.1
ip route add 85.114.160.0/255.255.224.0 via 10.1.141.1
ip route add 62.106.96.0/255.255.224.0 via 10.1.141.1
ip route add 172.16.0.0/255.240.0.0 via 10.1.141.1
ip route add 10.0.0.0/255.0.0.0 via 10.1.141.1
ip route add 213.180.192.0/255.255.224.0 via 10.1.141.1
ip route add 77.88.0.0/255.255.192.0 via 10.1.141.1
ip route add 87.250.224.0/255.255.224.0 via 10.1.141.1
ip route add 93.158.128.0/255.255.192.0 via 10.1.141.1
ip route add 192.168.0.1 via 10.1.141.1
ip route add 192.168.0.2 via 10.1.141.1
ip route add 81.28.160.1 via 10.1.141.1
ip route add 81.28.160.111 via 10.1.141.1
ip route del default
pppd call aistnet

также пробовал с командой
myserver:# update-rc.d <имя скрипта> defaults 99
был отчет
Adding system startup for /etc/init.d/<имя скрипта> ...
   /etc/rc0.d/K99<имя скрипта> -> ../init.d/<имя скрипта>
   /etc/rc1.d/K99<имя скрипта> -> ../init.d/<имя скрипта>
   /etc/rc6.d/K99<имя скрипта> -> ../init.d/<имя скрипта>
   /etc/rc2.d/S99<имя скрипта> -> ../init.d/<имя скрипта>
   /etc/rc3.d/S99<имя скрипта> -> ../init.d/<имя скрипта>
   /etc/rc4.d/S99<имя скрипта> -> ../init.d/<имя скрипта>
   /etc/rc5.d/S99<имя скрипта> -> ../init.d/<имя скрипта>
а сам скрипт выглядел так:
PATH=/bin:/usr/bin:/sbin:/usr/sbin
START=/bin/bash
case "$1" in
  start)
  $START /etc/init.d/<имя скрипта> 
  ;;

  stop)
    echo "Stop internet"
    ;;

  restart)
    echo "Restart internet"
    ;;

  *)
    echo "Usage: /etc/init.d/<имя скрипта> {start|stop|restart}"
    exit 1

esac

exit 0
Но тоже не работает

Просьба всетаки давайте попробуем разобраться с UpStart и ее событийной моделью

Оффлайн Nekko

  • Активист
  • *
  • Сообщений: 273
    • Просмотр профиля
Re: Автозагрузка скрипта через Upstart
« Ответ #6 : 20 Сентября 2008, 18:07:48 »
В /etc/rc.local впиши:
ip route add 213.178.32.0/255.255.224.0 via 10.1.141.1
ip route add 81.28.160.0/255.255.224.0 via 10.1.141.1
ip route add 85.114.160.0/255.255.224.0 via 10.1.141.1
ip route add 62.106.96.0/255.255.224.0 via 10.1.141.1
ip route add 172.16.0.0/255.240.0.0 via 10.1.141.1
ip route add 10.0.0.0/255.0.0.0 via 10.1.141.1
ip route add 213.180.192.0/255.255.224.0 via 10.1.141.1
ip route add 77.88.0.0/255.255.192.0 via 10.1.141.1
ip route add 87.250.224.0/255.255.224.0 via 10.1.141.1
ip route add 93.158.128.0/255.255.192.0 via 10.1.141.1
ip route add 192.168.0.1 via 10.1.141.1
ip route add 192.168.0.2 via 10.1.141.1
ip route add 81.28.160.1 via 10.1.141.1
ip route add 81.28.160.111 via 10.1.141.1
ip route del default
pppd call aistnet

Оффлайн Otetz

  • Активист
  • *
  • Сообщений: 455
    • Просмотр профиля
Re: Автозагрузка скрипта через Upstart
« Ответ #7 : 20 Сентября 2008, 18:10:26 »
Скрипт, который ты будешь класть в /bin должен выглядеть ТАК:

#!/bin/sh
ip route add 213.178.32.0/255.255.224.0 via 10.1.141.1
ip route add 81.28.160.0/255.255.224.0 via 10.1.141.1
ip route add 85.114.160.0/255.255.224.0 via 10.1.141.1
ip route add 62.106.96.0/255.255.224.0 via 10.1.141.1
ip route add 172.16.0.0/255.240.0.0 via 10.1.141.1
ip route add 10.0.0.0/255.0.0.0 via 10.1.141.1
ip route add 213.180.192.0/255.255.224.0 via 10.1.141.1
ip route add 77.88.0.0/255.255.192.0 via 10.1.141.1
ip route add 87.250.224.0/255.255.224.0 via 10.1.141.1
ip route add 93.158.128.0/255.255.192.0 via 10.1.141.1
ip route add 192.168.0.1 via 10.1.141.1
ip route add 192.168.0.2 via 10.1.141.1
ip route add 81.28.160.1 via 10.1.141.1
ip route add 81.28.160.111 via 10.1.141.1
ip route del default
pppd call aistnet

в самом /etc/rc.local просто прописываешь имя скрипта (или /bin/имяСкрипта). У меня route add тоже в rc.local вписан. Всё отлично работает и гемор с upstart в данном случае не оправдан.

« Последнее редактирование: 20 Сентября 2008, 18:12:53 от Otetz »
Anything, that MAY go wrong, WILL go wrong...

Оффлайн ikuchmin

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Автозагрузка скрипта через Upstart
« Ответ #8 : 21 Сентября 2008, 00:07:20 »
Что вариант Otetz что вариант SaySmile не работают так что даже не знаю что делать - у кого какие мысли
Ubuntu 8.04 LTS

tartan

  • Гость
Re: Автозагрузка скрипта через Upstart
« Ответ #9 : 21 Сентября 2008, 00:12:25 »
А что оно говорит?

Вот если тупо взять все команды, в этом скрипте присутствующие, и прогнать по одной в командной строке, то что будет?

Алсо подозреваю, что тупня может быть в pppd call aistnet, но ничего более определённого сказать не могу. route в принципе без затыков должна вполняться, а с ppp могут быть всякие косяки, теоретически.
« Последнее редактирование: 21 Сентября 2008, 01:05:45 от tartan »

Оффлайн Otetz

  • Активист
  • *
  • Сообщений: 455
    • Просмотр профиля
Re: Автозагрузка скрипта через Upstart
« Ответ #10 : 21 Сентября 2008, 13:33:59 »
А не в том ли проблема, что в Ubuntu только 2 runlevel'a? А ты прописываешь на Runlevel3. Попробуй пропиши на Runlevel 2.
Anything, that MAY go wrong, WILL go wrong...

Оффлайн ikuchmin

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Автозагрузка скрипта через Upstart
« Ответ #11 : 21 Сентября 2008, 20:17:03 »
А что оно говорит?

Вот если тупо взять все команды, в этом скрипте присутствующие, и прогнать по одной в командной строке, то что будет?

Алсо подозреваю, что тупня может быть в pppd call aistnet, но ничего более определённого сказать не могу. route в принципе без затыков должна вполняться, а с ppp могут быть всякие косяки, теоретически.
Если прогонять по одной из под рута то все нормально, все работает и подключается, даже в случае если pppd не срабытвает то роутинг все равно должен прописываться, а после перезагрузки ни роутинга ни запущенного pppd и кстати в rc.local я пробовал прописать только route и он также не сработал такое ощущение что он даже и не срабатывает вообще так что не знаю что происходит да и в /var/log/ никакого упоминания имени скрипта тоже нет, кстати имя скрипта в rc.local без pppd вставлять не пробовал

Да кстати по поводу уровней не пойму почему два каталогов rcN.d там тагже 7 скриптов rc в event.d тоже на все уровни и кстати уровень два - однопользовательский да еще и без потдержки сети ???
Жду рекомендаций
Да кстати может кто подскажет какую нить документацию по этой теме

Оффлайн Otetz

  • Активист
  • *
  • Сообщений: 455
    • Просмотр профиля
Re: Автозагрузка скрипта через Upstart
« Ответ #12 : 21 Сентября 2008, 20:32:13 »
В Ubuntu всё через ж не так. Основной runlevel - второй. На нём запускается kdm/gdm уже. Вот я и говорю, вполне вероятно, что ты просто не доходишь до третьего ранлевела.

[Изображение удалено администратором]

Ы?
« Последнее редактирование: 21 Сентября 2008, 20:37:46 от Otetz »
Anything, that MAY go wrong, WILL go wrong...

Оффлайн ikuchmin

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Автозагрузка скрипта через Upstart
« Ответ #13 : 21 Сентября 2008, 23:31:30 »
В общем пробовал ставить rc2 но увы никак не подействовало не ответа не привета да заодно и pppd убрал на всякий случай
Код скрипта:
# rc3 - runlevel 3 compatibility
#
# This task runs the old sysv-rc runlevel 3 (user defined) scripts.  It
# is usually started by the telinit compatibility wrapper.

start on runlevel 2

stop on runlevel [!2]
console output
script
ip route add 213.178.32.0/255.255.224.0 via 10.1.141.1
ip route add 81.28.160.0/255.255.224.0 via 10.1.141.1
ip route add 85.114.160.0/255.255.224.0 via 10.1.141.1
ip route add 62.106.96.0/255.255.224.0 via 10.1.141.1
ip route add 172.16.0.0/255.240.0.0 via 10.1.141.1
ip route add 10.0.0.0/255.0.0.0 via 10.1.141.1
ip route add 213.180.192.0/255.255.224.0 via 10.1.141.1
ip route add 77.88.0.0/255.255.192.0 via 10.1.141.1
ip route add 87.250.224.0/255.255.224.0 via 10.1.141.1
ip route add 93.158.128.0/255.255.192.0 via 10.1.141.1
ip route add 192.168.0.1 via 10.1.141.1
ip route add 192.168.0.2 via 10.1.141.1
ip route add 81.28.160.1 via 10.1.141.1
ip route add 81.28.160.111 via 10.1.141.1
end script

да и кстати если из под рута запускать
#start <name script>все проходит ок и маршрутизация настраивается

Оффлайн Otetz

  • Активист
  • *
  • Сообщений: 455
    • Просмотр профиля
Re: Автозагрузка скрипта через Upstart
« Ответ #14 : 22 Сентября 2008, 00:09:17 »
Погуглил малость. И даже не поленился потестить. У меня сработало. В общем, я делал так.

Берёшь свой скрипт вида:

#!/bin/sh
ip route add 213.178.32.0/255.255.224.0 via 10.1.141.1
ip route add 81.28.160.0/255.255.224.0 via 10.1.141.1
ip route add 85.114.160.0/255.255.224.0 via 10.1.141.1
ip route add 62.106.96.0/255.255.224.0 via 10.1.141.1
ip route add 172.16.0.0/255.240.0.0 via 10.1.141.1
ip route add 10.0.0.0/255.0.0.0 via 10.1.141.1
ip route add 213.180.192.0/255.255.224.0 via 10.1.141.1
ip route add 77.88.0.0/255.255.192.0 via 10.1.141.1
ip route add 87.250.224.0/255.255.224.0 via 10.1.141.1
ip route add 93.158.128.0/255.255.192.0 via 10.1.141.1
ip route add 192.168.0.1 via 10.1.141.1
ip route add 192.168.0.2 via 10.1.141.1
ip route add 81.28.160.1 via 10.1.141.1
ip route add 81.28.160.111 via 10.1.141.1
pppd call aistnet
ложиш его в /etc/init.d Далее, даёшь ему права на запуск: sudo chmod +x /etc/init.d/ScriptName. Затем, устанавливаешь sysv-rc-conf (sudo apt-get install sysv-rc-conf). Запускаешь: sudo sysv-rc-conf. В программе находишь имя скрипта на втором runlevel'e и включаешь его (пробел). Выходишь из программы.

Должно полететь после ребута.

ЗЫ

Please note that this program was designed for  use  in  package  maintainer  scripts and, accordingly, has only the very limited functionality required by such scripts.  System administrators are not encouraged to  use  update-rc.d  to  manage runlevels.  They should edit the links directly or use runlevel editors such as sysv-rc-conf and bum  instead.
(C) man update-rc.d
« Последнее редактирование: 22 Сентября 2008, 00:21:18 от Otetz »
Anything, that MAY go wrong, WILL go wrong...

 

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