Newsgroup: it.comp.os.linux.debian
Titolo: Script + Contab

Ciao a tutti...
spero di non essere troppo OT...
Qualcuno mi sa dire perché questo script funziona se eseguito
manualmente, e non funziona se eseguito dal crontab?
script.sh
[code]
#/bin/sh
MYLOGFILE="/home/utente/logs/log.txt"
if ! smbmount //indirizzoIP/unita /mnt/unita/ -o username=utente%utente
then
	date >> $MYLOGFILE
	echo "CONDIVISIONE NON TROVATA..." >> $MYLOGFILE
	echo "-----------------------------------------------------" >>
$MYLOGFILE
	echo "" >> $MYLOGFILE
	exit
fi
if ! ls /mnt/unita
then
	date >> $MYLOGFILE
	echo "DEVICE NON PRESENTE..." >> $MYLOGFILE
	echo "----------------------------------------------------" >>
$MYLOGFILE
	echo "" >> $MYLOGFILE
	smbumount /mnt/unita/
	exit
fi
date >> $MYLOGFILE
echo "AVVIO COPIA..." >> $MYLOGFILE
echo "" >> $MYLOGFILE
cp -a /home/ /mnt/unita/Backup/
smbumount /mnt/unita
[/code]
Mentre il crontab è il seguente: 0 23 * * 1-5 /path/script.sh
Lo script parte e monta correttamente l'unità remota, ma la copia
sembra non avvenire mai. Se invece eseguo lo script dalla shell copia
tutto senza problemi
Qualche help?
Grazie

 manualmente, e non funziona se eseguito dal crontab?
domanda stupida: con che utente esegui lo script "in manuale" e con quale 
tramite corontab?
Ciao,
Manuel

 tramite corontab?
Nessuna domanda è mai stupida... in effetti è un'informazione che ho
omesso io...
Comunque l'esecuzione avviene in entrambi i casi come root
Tra l'altro nel crontab di root ci sono anche altri 3 script (diversi
ovviamente) che funzionano egregiamente!

 ovviamente) che funzionano egregiamente!
Al 99% negli altri script i comandi sono dati con il path assoluto.
Ci posti anche le righe iniziali del crontab?
Ci potrebbe essere qualche forzatura sull'utente che esegue.
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 Ci potrebbe essere qualche forzatura sull'utente che esegue.
Questo è il crontab di root (ottenuto con il comando crontab -l)
0 0 * * * /usr/sbin/logrotate /etc/logrotate.conf
0 23 * * 1-5 /root/sistema/backuprev35.sh
0 2 * * 2-6 /root/sistema/backupnovell.sh
58 22 * * 1-5 /root/sistema/status_mdb_novell.sh
Lo script che non va è il secondo, e tutti vengono eseguiti come root
proprio per evitare "casini" con i permessi utente
Il 3° script (backupnovell.sh) fondamentalmente ha lo stesso identico
funzionamento di quello che non va, con la differenza che si collega
direttamente ad un server Novell Netware per backuparne alcure
directory... e questo funziona senza problema...
Quello che non capisco (ignoranza mia) è la differenza tra
l'esecuzione manuale e quella di crontab...
???

 l'esecuzione manuale e quella di crontab...
Principalmente l'ambiente.
cron setta alcune cose autonomamente, e non tiene conto di
profile o bashrc. (man 5 crontab per i dettagli)
La prima differenza e' la shell (anche se tu mi sembra la setti
esplicitamente) che punta a /bin/sh nonostante $SHELL possa
puntare a qualcosa d'altro, come /bin/bash.


ok... se prima ero confuso ora lo sono di più...
Per fare una prova ho modificato lo script per fare in modo che
scrivesse nella directory di destinazione x (invece che Backup) e ho
modificato il crontab per eseguire lo script nel giro di un paio di
minuti...
La copia l'ha fatta, ma solo della directory home di un utente (solo
alcuni file e non le sottodirectory...) e ha creato la directory
lost+found
???
e tutte le altre? ho almeno una ventina di utenti con relative
sottodirectory... e non le ha calcolate nemmeno di striscio...
ho controllato i diritti del file .sh e sono
lettura-scrittura-esecuzione per l'utente root (mentre gruppo/altri non
hanno diritti)...
Forse è questo il problema? (ora provo a cambiare i diritti... ma...)

 
No.
I diritti dello script non possono avere nessuna influenza sull'accesso
poi ai file/directory oggetto di copia.
Sembra che tu abbia il crontab di root che esegue con altri diritti.
Prova a mettere quella riga in /etc/crontab, che esegue sicuramente
con diritti di root.
E verifica bene i diritti di attraversamento delle dir sorgenti e
destinazione.


NEWS... non so se possa centrare
eseguendo il comando who  -H -a oltre a root mi da come attivo l'utente
de quale (guarda caso) vengono copiati quei 4 dati in croce...
Esattamente mi ritrovo con questa situazione:
NOME       LINEA        ORA          INATTIV        PID        PID
COMMENTO USCITA
mauro    ? :0           Dec 13 14:44   ?          1354
Ma se cerco di killare il PID, mi dice che non esiste...
Se il problema potesse essere questo, come faccio a killare/sbloccare
l'utente?

 con diritti di root.
Macché... nemmeno così... non riesco proprio a capire...

 Ma se cerco di killare il PID, mi dice che non esiste...
Hai un utente connesso da dicembre?


In realtà no...
ti spiego (ho fatto qualche diecina di prove):
* il server (senza video) è stato inizialmente installato anche con
Gnome
* oggi ho collegato un video e ho avviato Gnome, il quale si è
bloccato dopo la richiesta uid/pssw... una volta ri-killato Gnome
l'utente mauro mi risulta sempre connesso ? :0 ma questa volta con la
data di oggi.
(in effetti se cerco di killare il PID dell'utente, mi dice che non
c'e' nulla da killare...)
resta sempre il mio problema (che per ora sto ovviando lanciando
manualmente lo script...), proverò ad azzerare utmp per vedere se la
presenza di questo "utente fantasma" può effettivamente portare
problemi...

*aggiunta*
Eseguendo il comando
last mauro
ottengo
mauro    tty1                          Thu Feb  9 13:26 - 13:26
(00:00)
mauro    :0                            Thu Feb  9 13:17    gone - no
logout