Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Problemen met cron @ reboot  (gelezen 975 keer)

ianmen

  • Gast
Problemen met cron @ reboot
« Gepost op: 2009/08/16, 16:45:33 »
Ik ben al enige weken aan het vechten met een cron instelling. Ik heb zelf een bash script gemaakt test.sh genaamd die mijn usenetsoftware en mijn netwerk bridge opstart. Nu wil ik dus dat dit script iedere keer bij het opstarten van het systeem gestart wordt. Normaal moet dit niet z'n probleem zijn maar het lukt me toch niet om alles goed te laten verlopen.

Dit is de exacte regel in crontab :

# m h  dom mon dow   command
@reboot /home/ianmen/test.sh

Wanneer ik het volgende in de command line invoer dan draait het script zonder problemen :

sudo /home/ianmen/test.sh

Echter wanneer ik het systeem opnieuw opstart dan draait het script niet of verkeerd. wanneer ik middels grep CRON /var/log/syslog in de log kijk zie ik wel dat het script gedraaid heeft :

Aug 16 16:33:00 mars /usr/sbin/cron[6968]: (CRON) STARTUP (fork ok)
Aug 16 16:33:00 mars /usr/sbin/cron[6968]: (CRON) INFO (Running @reboot jobs)
Aug 16 16:33:00 mars /USR/SBIN/CRON[7017]: (root) CMD (/home/ianmen/test.sh)

Maar het start niet mijn usenetsoftware of mijn netwerk bridge op. Wanneer ik vanaf de commandline hetzelfde script draai doet hij dat wel.
Hieronder mijn script, lijkt me gewoon een normaal script zonder al te rare dingen.

#!/bin/bash
sleep 50
hellanzb.py -D
ifup br0
echo "Usenet_Network_up"


De rechten voor dit script staan op 777 dus daar lijkt mij het probleem ook niet te zitten. Heeft er iemand veel ervaring met cron instellingen en kan mij verder helpen, of een richting aangeven waar ik moet zoeken om het op te lossen. Bij voorbaat dank.

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: Problemen met cron @ reboot
« Reactie #1 Gepost op: 2009/08/17, 12:18:39 »
Ik ben al enige weken aan het vechten met een cron instelling. Ik heb zelf een bash script gemaakt test.sh genaamd die mijn usenetsoftware en mijn netwerk bridge opstart. Nu wil ik dus dat dit script iedere keer bij het opstarten van het systeem gestart wordt. Normaal moet dit niet z'n probleem zijn maar het lukt me toch niet om alles goed te laten verlopen.

Dit is de exacte regel in crontab :

# m h  dom mon dow   command
@reboot /home/ianmen/test.sh
In welke crontab staat het? De systeembrede crontab, of degene voor jouw gebruiker?


#!/bin/bash
sleep 50
hellanzb.py -D
ifup br0
echo "Usenet_Network_up"

Als je dit in de systeembrede crontab hebt gezet, wordt het script met root-rechten gestart. Dat is voor HellaNZB niet nodig en zou een veiligheidsrisico kunnen zijn. Bovendien zou je die bridge misschien makkelijker op kunnen zetten via de netwerkmanager of /etc/network/interfaces

Citaat
De rechten voor dit script staan op 777 dus daar lijkt mij het probleem ook niet te zitten. Heeft er iemand veel ervaring met cron instellingen en kan mij verder helpen, of een richting aangeven waar ik moet zoeken om het op te lossen. Bij voorbaat dank.
Dat betekent dat iedere gebruiker op jouw systeem dat script aan zou kunnen passen en dat het bij het opstarten wordt uitgevoerd. Dat is een enorm beveiligingsgat.

Wat je evt. zou kunnen proberen: verwijder dit script uit de crontab en zet het in /etc/rc.local
Dat bestand wordt aan het eind van de opstartprocedure uitgevoerd.

Een mogelijke oorzaak voor het niet willen lopen van het script is dat je "echo" gebruikt en ook de uitvoer van Hellanzb niet afvangt. Scripts die via cron lopen hebben geen terminal om die berichten weer te geven en zouden daarop kunnen hangen.
Je moet je script dan aanpassen zodat de output afgevangen wordt. Dit kan bijvoorbeeld zo:
hellanzb.py -D >/dev/null 2>&1

Verder moet je in cron altijd het volledige pad naar een bestand opgeven.
Dus /usr/bin/hellanzb.py en /usr/bin/ifup bijvoorbeeld. Ik heb geen idee of die paden kloppen en kan het momenteel niet makkelijk controleren. Je kan zelf bepalen welk pad het is via het "which" commando.
Dus "which ifup" geeft het volledige pad dat je moet gebruiken.

ianmen

  • Gast
Re: Problemen met cron @ reboot
« Reactie #2 Gepost op: 2009/08/17, 16:28:58 »
Bedankt voor je snelle reactie, klopt dat dit grote beveiligings risico's met zich mee brengt. Maar ik wil het eerst aan de praat krijgen voordat ik het dichttimmer.

Ik heb het script uit de crontab gehaald en het in /etc/rc.local gezet. Hieronder mijn rc.local file.
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/usr/local/bin/hellanzb.py -D >/dev/null 2>&1
exit 0


Dit werkt helaas ook niet. Wanneer ik reboot wordt hellanzb niet opgestart. Zijn er nog andere manieren om dit op te lossen ? Al bedankt voor het reageren.

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: Problemen met cron @ reboot
« Reactie #3 Gepost op: 2009/08/17, 16:46:13 »
Is hellanzb wel netjes ingesteld? Is het wel de bedoeling om het als root te draaien?
Momenteel heb ik geen Ubuntu bij de hand, dus kan ik niet controleren hoe het zit, maar als ik het goed herinner moet je hellanzb eerst configureren via /etc/hellanzb.conf voordat het gaat werken.

ianmen

  • Gast
Re: Problemen met cron @ reboot
« Reactie #4 Gepost op: 2009/08/17, 17:09:11 »
Het is wel de bedoeling dat het als root draait. Wanneer ik hellanzb niet als root start dan start hij niet.
Hellanzb is goed ingesteld, wanneer ik namelijk het volgende in de cl invoer
sudo /usr/local/bin/hellanzb.py -DDan start hellanzb zonder problemen, wanneer er iets in de conf fout zou zijn dan zou dit ook niet mogelijk zijn. Het is erg raar en het is ook moeilijk om te zien waar het probleem ligt.

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: Problemen met cron @ reboot
« Reactie #5 Gepost op: 2009/08/18, 16:36:27 »
Vreemd.
Hier draait HellaNZB prima onder mijn eigen account. Ik heb de configuratie zo aangepast dat hij alleen leest en schrijft in mappen waar ik ook rechten op heb. Op die manier zijn alle gedownloade bestanden ook gewoon van mezelf en niet van root. Dat maakt het verplaatsen of verwijderen van die bestanden ook weer makkelijker :)