Назад | Перейти на главную страницу

сценарии выскочки: запускать задачу после подключения к сети

Я работаю над переносом моей текущей настройки сервера на новое оборудование и переходом с ubuntu karmic koala на lucid lynx. В настоящее время я использую gw6c (скомпилированный с веб-сайта gogo6, а не версию из репозиториев), чтобы получить доступ по ipv6 для своих систем. В системе karmic koala я использовал простой скрипт init.d для запуска клиента ipv6

 #! /bin/sh
/usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf

Я подумал, поскольку это работает на любом уровне запуска, он должен переводиться на

respawn
console none

start on startup

stop on shutdown

script
exec /usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf
emit free6_ipv6_started
end script

это отлично работает, начиная с initctrl, но, по-видимому, не запускается при загрузке. - его статус остановлен / ожидает. Он работает нормально (и возрождается), когда запускается иначе. Есть идеи о том, где я ошибаюсь, и что было бы подходящим аргументом в пользу начала?

РЕДАКТИРОВАТЬ: точная ошибка: «init: основной процесс gw6c (xxx) завершился со статусом 8», за которым следует возрождение процесса, причем xxx является PID, который я подозреваю. Я также наполовину подозреваю, что это потому, что gw6c запускается раньше, чем сеть, и мне нужно, чтобы мой eth0 был включен до того, как gw6c будет

По-видимому

respawn
console none

start on (local-filesystems and net-device-up IFACE!=lo)
stop on [!12345]

script
chdir /usr/local/gw6c/bin/

exec /usr/local/gw6c/bin/gw6c 
end script

кажется работает

Поместите скрипт, запускающий gw6c, в

/etc/network/if-up.d

Все сценарии в этой папке запускаются после появления интерфейса. Если вы хотите, чтобы он запускался только при появлении eth0, отредактируйте запись eth0 в

/etc/network/interfaces

и добавить вызов в скрипт

iface eth0 inet dhcp
  up /etc/init.d/gw6c restart

Я бы также предложил добавить сценарии предварительного отключения для отключения туннеля до того, как интерфейс перейдет в автономный режим.

Как только вы это сделаете и найдете работающую реализацию, опубликуйте ее здесь, чтобы я мог ее использовать. У меня на ноутбуке есть gw6c, но мне пока лень автоматизировать его.

Спасибо, "Подмастерье выродка" :) Вы сэкономили мне много времени. Я боролся с /etc/init.d/gw6c скриптом, пробовал некоторые тайминги с "sysv-rc-conf -p" и задавался вопросом, почему он не работает (он же WTF?).

respawn
console none

start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]

script

exec /etc/init.d/gw6c start
end script

Слегка модифицированный ("уровень запуска" и команда exec) скрипт сделал свое дело! :) :) :)

Отсюда: http://upstart.ubuntu.com/cookbook/#single-job-instance-running-without-pid

description     "Uncomplicated firewall"

# Make sure we start before an interface receives traffic
start on (starting network-interface
          or starting network-manager
          or starting networking)

stop on runlevel [!023456]

console output

pre-start exec /lib/ufw/ufw-init start quiet
post-stop exec /lib/ufw/ufw-init stop