[Eisfair_dev] eischk CRONTAB wird nicht richtig überprüft

Marcus Roeckrath marcus.roeckrath at gmx.de
Sa Feb 17 10:22:35 CET 2018


Hallo Sebastian, hallo Holger,

Marcus Roeckrath wrote:

>> '/10 * * * *' wird als richtig erkannt. Ist aber falsch
> 
> Das ist die zugehörige RegExp:
> 
> '([0-9,/*-]+) *([0-9,/*-]+) *([0-9,/*-]+)
> *([0-9,/*(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec)-]+)
> *([0-7,/*(mon,tue,wed,thu,fri,sat,sun)-]+)'

Kritisch ist das " *" zwischen den Elementen, da da Leerzeichen auch Null
mal vorkommen kann und damit wird z. B. bei 0-23 als ein Element die ersten
beiden RegExp verbraucht.

eis # echo "0-23 * *" | grep -E '([0-9,/*-]+) *([0-9,/*-]+) *([0-9,/*-]+)
 *([0-9,/*(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec)-]+)
 *([0-7,/*(mon,tue,wed,thu,fri,sat,sun)-]+)'
0-23 * *

Hier mein Vorschlag:

'^ *([0-9,/*-]+) +([0-9,/*-]+) +([0-9,/*-]+)
 +([0-9,/*(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec)-]+)
 +([0-7,/*(mon,tue,wed,thu,fri,sat,sun)-]+) *$'

Habe gleichzeitig auch noch Leerzeichen am Ende und anfang zugelassen.

Nun:

eis # echo "0-23 * *" | grep -E '^ *([0-9,/*-]+) +([0-9,/*-]+) +([0-9,/*-]+)
 +([0-9,/*(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec)-]+)
 +([0-7,/*(mon,tue,wed,thu,fri,sat,sun)-]+) *$'
eis #

Behebt auch einen weiteren Fehler.

Alt:

eis # echo "x0-23 * * * *" | grep -E '([0-9,/*-]+) *([0-9,/*-]+)
 *([0-9,/*-]+)
 *([0-9,/*(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec)-]+)
 *([0-7,/*(mon,tue,wed,thu,fri,sat,sun)-]+)'
x0-23 * * * *

Neu:

eis # echo "x0-23 * * * *" | grep -E '^ *([0-9,/*-]+) +([0-9,/*-]+)
 +([0-9,/*-]+)
 +([0-9,/*(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec)-]+)
 +([0-7,/*(mon,tue,wed,thu,fri,sat,sun)-]+) *$'

Jeder Unfug wird dadurch aber auch nicth abgefangen.

-- 
Gruss Marcus


Mehr Informationen über die Mailingliste Eisfair_dev