Vraag upstart-scripts: voer een taak uit nadat het netwerk is opgestart


Ik ben bezig met het verplaatsen van mijn huidige server-setup naar nieuwere hardware en het migreren van ubuntu-karmische koala naar lucide lynx. Momenteel gebruik ik gw6c (gecompileerd vanaf de gogo6-website, in tegenstelling tot de versie van de repositories) om ipv6 toegang te krijgen voor mijn systemen. Op het karmische koala-systeem gebruikte ik eenvoudig init.d-script om de ipv6-client te starten

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

Ik dacht dat omdat dit op elk runlevel draait, het zou moeten vertalen naar

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

dit werkt prima gestart vanaf initctrl, maar het begint blijkbaar niet wanneer het opstart. - de status ervan is stoppen / wachten. Het werkt prima (en respawnt) als het anders is gestart. Welke ideeën over waar ik fout ga en wat is het juiste 'begin van argument'?

EDIT: de exacte fout is 'init: gw6c hoofdproces (xxx) eindigde met status 8' gevolgd door het proces respawning, waarbij xxx een PID is die ik vermoed. Ik vermoed ook half dat dit de reden is dat gw6c start voordat netwerken werkt, en ik heb mijn eth0 nodig voordat gw6c is


23
2018-02-28 06:57


oorsprong




antwoorden:


Blijkbaar

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

lijkt te werken


27
2018-02-28 08:54



Ja, ik heb onlangs een paar geschreven die gebruik maken van net-device-up en net-device-down die perfect werken. - Andy Shellam
ik heb het nergens in de documentatie gevonden. iemand op een lokale mailinglijst heeft me geholpen - Journeyman Geek
Dit was precies wat ik zocht. Het staat nog steeds niet in de upstart documentatie waar ik maar kon vinden. - Nathan


Plaats een script met gw6c in

/etc/network/if-up.d

Alle scripts in die map worden uitgevoerd nadat een interface verschijnt. Als je alleen wilt dat het wordt uitgevoerd als eth0 opkomt, bewerk dan het eth0-item in

/etc/network/interfaces

en voeg een oproep toe aan het script

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

Ik zou ook voorstellen om pre-down scripts toe te voegen om de tunnel te stoppen voordat de interface offline gaat.

Zodra u dat doet en een implementatie vindt die werkt, kunt u deze hier achteraf plaatsen zodat ik deze kan gebruiken. Ik heb gw6c op mijn laptop staan ​​maar ik ben tot dusver te lui geweest om het te automatiseren.


4
2018-02-28 08:32



Het vorige script dat ik heb gepost werkt vrij goed, hoewel ik het handmatig opnieuw moet opstarten, mocht mijn verbinding zichzelf resetten - dit is voor parvenu, wat standaard is op lucide lynx. - Journeyman Geek


Bedankt "The Journeyman geek" :) Je hebt me veel tijd bespaard. Ik vocht met het script /etc/init.d/gw6c, probeerde een aantal timings met "sysv-rc-conf-p" en vroeg me af waarom het niet werkt (ook bekend als 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

Licht aangepast ("runlevel" en exec commando) script deed het werk! :) :) :)


1
2018-05-14 20:24





Vanaf hier: 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

0
2017-12-06 18:40