Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Cron e le Variabili
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian)
View previous topic :: View next topic  
Author Message
maruscya
Guru
Guru


Joined: 13 Aug 2004
Posts: 507

PostPosted: Fri Mar 27, 2009 2:12 pm    Post subject: Cron e le Variabili Reply with quote

Ciao a tutti...

Sono alle prese con uno scrippettino in bash per copiare della macchine virtuali dal server alla nas di rete. Ho fatto varie prove e lanciando a mano il comando specificando la macchina virtuale da copiare tutto funziona. Ovvero
Quote:

- spengo la macchina specificata
- copio i file che mi interessano
- riaccendo la macchina


Nulla di particolarmente complesso. il tutto con un semplice comando del tipo

Quote:

#>backup-vm.sh squid


Squid e il nome della macchina da copiare. Una volta che ho testato il funzionamento ho messo il comando nel crontab si sistema

Quote:

10 5 * * * root /usr/bin/backup-vm.sh squid


Quando pero dovrebbe partire il comando, sembra che il nome della macchina venga per qualche motivo perso... e la macchina virtuale non viene spenta.

ecco lo script incriminato. Dato che sono pessimo nella programmazione potrebbe essere un banale errore che non riesco a vedere...

Quote:

#!/bin/bash

VM=$1
DESTSERVER=192.168.1.211
DESTDIR=/array1/backup-vm/$VM
SRCDIR=/mnt/vmware/VM/$VM/*.vmdk
EMAILDEST=maruscya@*******


DATE=`date | cut -c 4-19`
echo $DATE "FASE 1 - Stop Vmware Server...." > /tmp/date.txt
vmrun -T server -h https://127.0.0.1:8333/sdk -u root -p ******* stop "[standard] $VM/"$VM".vmx" soft

DATE=`date | cut -c 4-19`
echo $DATE "FASE 2 - Copia dati su NAS di rete...." >> /tmp/date.txt
echo "ncftpput -u anonymous -p a@b.c" $DESTSERVER $DESTDIR $SRCDIR
ncftpput -u anonymous -p a@b.c $DESTSERVER $DESTDIR $SRCDIR

DATE=`date | cut -c 4-19`
echo $DATE "FASE 3 - Start Vmware Server ...." >> /tmp/date.txt
vmrun -T server -h https://127.0.0.1:8333/sdk -u root -p ****** start "[standard] $VM/"$VM".vmx"

cat /tmp/date.txt | mailx -s " Vmware Copy " $EMAILDEST


nel log di sistema si vede che lo script viene eseguito, ma sembra che i comandi vmrun non vengano eseguiti in modo corretto....
Spero nel vostro aiuto.

Grazie mille come al solito !
Back to top
View user's profile Send private message
Scen
Retired Dev
Retired Dev


Joined: 29 Jul 2003
Posts: 2470
Location: Padova, Italy

PostPosted: Fri Mar 27, 2009 3:32 pm    Post subject: Reply with quote

Hai provato ad eseguire questo script in modalità "debug", inserendo un bel
Code:

set -x

o modificando la prima riga in
Code:

#!/bin/bash -x

?

Così vedi cosa succede. Magari ridireziona l'output di vmrun su un file, così puoi vedere cosa succede (altrimenti l'output dello script verrebbe spedito via mail all'utente predefinito di sistema, solitamente root o un suo alias).

Non sono neanche io un esperto di programmazione in BASH, ma ipotizzo che gli script eseguiti tramite cron non si prendano la variabile che gli passi (nell'esempio "squid").
_________________
I was born in a deep forest/I wish I could live here all my life/I am made from stones and roots/My home, these woods and roads
All my life I loved this sound/Of the woods all around/Eagles flies where the winds blows free
Journey is my destiny
Back to top
View user's profile Send private message
maruscya
Guru
Guru


Joined: 13 Aug 2004
Posts: 507

PostPosted: Fri Mar 27, 2009 3:55 pm    Post subject: Reply with quote

Scen wrote:
Hai provato ad eseguire questo script in modalità "debug", inserendo un bel .....



Ora provo subito ad inserire -x nella prima riga cosi vedo che succede... Intanto grazie per la dritta..
Back to top
View user's profile Send private message
Scen
Retired Dev
Retired Dev


Joined: 29 Jul 2003
Posts: 2470
Location: Padova, Italy

PostPosted: Sat Mar 28, 2009 1:12 pm    Post subject: Re: Cron e le Variabili Reply with quote

Trovato! :idea:
maruscya wrote:

Code:

10 5 * * *  root /usr/bin/backup-vm.sh squid


Il problema è quel "root" : non va specificato l'utente che esegue il comando, ma devi eseguire
Code:

crontab -e

e inserire la riga, nel tuo caso
Code:

10 5 * * * /usr/bin/backup-vm.sh squid


Come punizione, rileggersi Guida a Cron per Gentoo Linux :twisted:

:wink:

[EDIT]
Altra cosa: ATTENTO che quando uno script viene eseguito tramite cron, tutte le variabili d'ambiente non vengono inizializzate, tra cui $PATH, per cui

  • o inserisci il percorso completo degli eseguibili che richiami nello script (es. tu richiami vmrun)
  • oppure fai il figo e usi sintassi del tipo $(which vmrun) 8)

_________________
I was born in a deep forest/I wish I could live here all my life/I am made from stones and roots/My home, these woods and roads
All my life I loved this sound/Of the woods all around/Eagles flies where the winds blows free
Journey is my destiny
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum