Newsgroup: it.comp.os.linux.sys
Titolo: [xpost] errore php shell_exec su migrazione sito

ciao
ho migrato un sito in php (che risiedeva su una centos, fatto da me) su 
un nuovo server con debian squeeze.
una funzionalità del sito è quella di poter mettere in crontab uno script 
di reportistica.
la tecnica che uso è mettere in una stringa tutte le linee del crontab 
separate da \n e dare un shell_exec($stringa);
la stringa è una cosa del genere:
echo -e "15 19 * * 1 /usr/local/bin/report/report.py -r 2 -docroot /var/
www/
dominio.com/
 >/dev/null 2>/dev/null\n18 11 * * 2 /usr/local/bin/
report/report.py -r 2 -docroot /var/www/
dominio.com/
 >/dev/null 2>/dev/
null\n00 16 * * 2 /usr/local/bin/report/report.py -r 2 -docroot /var/www/
dominio.com/
 >/dev/null 2>/dev/null\n00 17 * * 3 /usr/local/bin/report/
report.py -r 2 -docroot /var/www/
dominio.com/
 >/dev/null 2>/dev/null\n26 
17 * * 5 /usr/local/bin/report/report.py -r 2 -docroot /var/www/
dominio.com/
 >/dev/null 2>/dev/null" |crontab -
sul server centos il comando gira senza problemi
sulla mia lenny in locale anche
sul nuovo server squeeze se lancio il comando tramite CLI anche
mentre tramite shell_exec (redirigendo lo stderr su file) ho questo 
errore:
"-":0: bad minute
errors in crontab file, can't install.
dove sbaglio?
capirei se il comando non funzionasse su squeeze nemmeno da CLI, ma così 
non so proprio che pesci prendere.
grazie a tutti
Andrea 

 
dominio.com/
 >/dev/null 2>/dev/null" |crontab -
  Nel copia-incolla potrebbe essercisi infilato qualche carattere di
ritorno a capo, compromettendone la corretta interpretazione.  Scrivilo
in una maniera più sicura e leggibile:
echo -e "DIR='/var/www/
dominio.com
'
REP='/usr/local/bin/report/report.py'
FILT='>/dev/null 2>&1'
15 19 * * 1 $REP -r 2 -docroot $DIR $FILT
18 11 * * 2 $REP -r 2 -docroot $DIR $FILT
00 16 * * 2 $REP -r 2 -docroot $DIR $FILT
00 17 * * 3 $REP -r 2 -docroot $DIR $FILT
26 17 * * 5 $REP -r 2 -docroot $DIR $FILT"
  Ciao,
-- 
Alessandro Selli 
http://alessandro.route-add.net
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.

 26 17 * * 5 $REP -r 2 -docroot $DIR $FILT"
  O meglio, per seguire i consigli che do sempre agli altri :-), fatto così:
echo "DIR='/var/www/
dominio.com
'
REP='/usr/local/bin/report/report.py'
FILT='>/dev/null 2>/dev/null'



domande:
1. quando lanci lo script che fallisce lo provi lanciandolo da shell o
come pagina web ?
(potrebbe essere un problema di diritti)
se lo lanci da shell prova lanciandolo con sudo -u www-data ....
2. prova a togliere roba dal' echo e vedere se e' una [particolare
riga....
facci sapere

 in una maniera più sicura e leggibile:
nessun errore di copia incolla, ho individuato il problema ma non una 
soluzione corretta.
il problema è che il comando non funziona se eseguito con /bin/sh 
(diversa interpretazione dei double quote, \n etc)
il fatto è che dando all'utente che esegue il comando la shell /bin/bash , 
l'errore resta. Quindi da qualche parte apache  continua a far usare la /
bin/sh , ma non son riuscito a capire dove.
Ho aggirato  il problema facendo eseguire 
/bin/bash -c "comando"
ma se volessi invece far eseguire direttamente con bash dove devo andare 
a vedere?
ribadisco che tale problema su lenny e su centos non c'è, quindi deve 
essere una impostazione di squeeze