Nieuws:

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

Auteur Topic: Script maken voor Crontab  (gelezen 4779 keer)

Offline rytec

  • Lid
Script maken voor Crontab
« Gepost op: 2008/04/07, 11:30:13 »
Ik wil graag een script "laten" maken die volgende zaken uitvoert.

Commando killall cccam uitvoeren.
Kijken of er een bestandje met de naam cccam.cfg klaarstaat in het mapje /var/etc/ready
Indien niet het geval, dan moet /usr/local/bin/cccam weer gestart worden.

Indien dit wel zo is :
Dan dient het bestand /var/etc/cccam.cfg gerenamed te worden naar cccam_datum of iets dergelijks (soort backupfile maken).
Dan moet het bestand cccam.cfg van map /var/etc/ready verplaatst worden naar /var/etc en met verplaatsten zou het dus ook weg moeten zijn uit de map /var/etc/ready

En nu mag het programma /usr/local/bin/cccam weer opgestart worden.

Wie wil en kan mij helpen hiermee?

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
Script maken voor Crontab
« Reactie #1 Gepost op: 2008/04/07, 12:08:58 »
Zoiets waarschijnlijk:

#!/bin/bash

now=`date %Y-%m-%d`

killall cccam
if [ -f /var/etc/ready/cccam.cfg ]; then
        cp /var/etc/ready/cccam.cfg /var/etc/ready/cccam.cfg.$now
        mv /var/etc/ready/cccam.cfg /var/etc
else
        /usr/local/bin/cccam
fi
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

Offline rytec

  • Lid
Script maken voor Crontab
« Reactie #2 Gepost op: 2008/04/07, 12:24:53 »
Dat is snel en hartelijk dank.
Welke extensie geef ik dit bestand het best en moet je dat in een bepaalde dir plaatsen?

start dit script else ook cccam weer op als die if niet bestaat? Ik bedoel als de file niet aanwezig is in de ready map?

nogmaals dank voor dit supersnelle antwoord!

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
Script maken voor Crontab
« Reactie #3 Gepost op: 2008/04/07, 15:00:20 »
Traditiegetrouw zou je het script iets met xxxx.sh moeten noemen om aan te geven dat 't een shell script is, mar dat is net verplicht natuurlijk, "pietje" zou net zo goed werken ;-)

Maak 'm wel executable met: chmod a+x xxxx.sh
Tevens heb je write permissies nodig op de genoemde directories, maar ik had aangenomen dat dat al geregeld was omdat je het waarschijnlijk al met de hand doet.

Het script zegt:

Als /var/etc/ready/cccam.cfg bestaat dan:
- kopieer
- rename
Anders:
- start cccam op

Wellicht zou je direct ONDER het "mv" commando en BOVEN de "else" ook nog /usr/local/bin/cccam moeten opnemen als je wil dat na de copy en mv het programma gestart moet worden. Ik weet natuurlijk niet echt precies waar het over gaat, dus kan me de logica niet zo voor de geest halen ...

Suc6!
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

Offline rytec

  • Lid
Script maken voor Crontab
« Reactie #4 Gepost op: 2008/04/07, 15:38:33 »
Inderdaad,

Ik heb deze in de map /etc/cron.cam geplaatst met als naam croncccam.sh en met chmod 755 executable gemaakt.
Ook heb ik die lijn /usr/local/bin/cccam onder het commando mv gezet, zie hieronder het detail, maar die date werkt niet dus heb ik een hekje voorgezet voorlopig want hij geeft een foutmelding ; cp: target '%Y-%m-%d' is not a directory.
Ook gebruik ik CP -f om zonder vraag dit bestand telkens te overschrijven, mocht ik date toch nog aan de praat krijgen dan is die -f na CP niet nodig omdat daar dan telkens een andere datum wordt aangemaakt.

#!/bin/bash

#now='date %Y-%m-%d'

killall cccam
if [ -f /var/etc/ready/CCcam.cfg ]; then
        cp -f /var/etc/CCcam.cfg /var/etc/ready/CCcam.old.cfg
        mv /var/etc/ready/CCcam.cfg /var/etc
        /usr/local/bin/cccam
else
        /usr/local/bin/cccam
fi

In de crontab -e heb ik dus opgenomen :

45 05 * * * run-parts /etc/cron.cam

waardoor alle scripts in deze map om 05:45 iedere dag uitgevoerd dienen te worden.

Dit is een software emulator die in een linux decoder gebruikt wordt en die ik iedere dag zowieso wil laten stoppen + starten ivm geheugenverbruik maar het bijkomende is dat indien er een wijziging klaarstaat van de config dat die dan tijdens de stop/startfase bijgewerkt wordt automatisch.

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
Script maken voor Crontab
« Reactie #5 Gepost op: 2008/04/07, 16:05:07 »
Date werkt niet omdat het BACKTICKS moeten zijn (`) en niet enkele aanhalingstekens ('). Wat scheelt 't ? ;-)
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

Offline rytec

  • Lid
Script maken voor Crontab
« Reactie #6 Gepost op: 2008/04/07, 16:07:32 »
De crontab opdracht run-parts werkt niet, ik heb dus gewoon een lijn gemaakt met daarin /bin/bash /etc/cron.cam/croncccam.sh
en na testen werkt dit prima.

Ik zie net je post ivm backticks, ga ik gelijk proberen.

Toch nogmaals bedankt voor je bijdrage.

Offline rytec

  • Lid
Script maken voor Crontab
« Reactie #7 Gepost op: 2008/04/07, 16:37:05 »
Weer een stap verder door die backticks te gebruiken maar het gedeelte in de filename waar ik dus $now gezet heb blijft leeg, er komt geen datumnotatie te staan, het bestand wordt wel aangemaakt maar zonder die datumnotatie.

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
Script maken voor Crontab
« Reactie #8 Gepost op: 2008/04/07, 17:30:04 »
Uh-oh, 't is 1-1 rytec, dit keer mijn foutje: zet een "+" direct voor de eerste %, dus:
now=`date +%Y-%m-%d`
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

Offline rytec

  • Lid
Script maken voor Crontab
« Reactie #9 Gepost op: 2008/04/08, 12:32:15 »
Goedemiddag ;-)

Ik ben al blij dat u mij wilt helpen maar heb nog een vraagje nu ivm de crontab -e.
Ik heb hierin het commando 50 05 * * 0,1,5 /sbin/shutdown -r now gezet maar vanmorgen herstartte de server niet en de DATE staat juist op dinsdag 8 april dus dag 1 zou dit moeten zijn.
Haal ik die geselecteerde dagen weg en dus een * in de plaats doet ie het wel goed.
Hoe kun je controleren dat dagnummer juist staat of heb ik de notering niet goed gedaan?

Offline rja

  • Lid
Script maken voor Crontab
« Reactie #10 Gepost op: 2008/04/08, 13:23:48 »
Citaat van: rytec
Goedemiddag ;-)

Ik ben al blij dat u mij wilt helpen maar heb nog een vraagje nu ivm de crontab -e.
Ik heb hierin het commando 50 05 * * 0,1,5 /sbin/shutdown -r now gezet maar vanmorgen herstartte de server niet en de DATE staat juist op dinsdag 8 april dus dag 1 zou dit moeten zijn.
Haal ik die geselecteerde dagen weg en dus een * in de plaats doet ie het wel goed.
Hoe kun je controleren dat dagnummer juist staat of heb ik de notering niet goed gedaan?
In de crontab 0 = Zondag

2 = dinsdag.

Offline rytec

  • Lid
Script maken voor Crontab
« Reactie #11 Gepost op: 2008/04/08, 13:35:32 »
OK, mijn dank is groot.