Newsgroup: it.comp.os.linux.sys
Titolo: Problema in cron di rsync over ssh con chiavi

Ciao a tutti,
ho un problema che mi sta facendo diventare stupido (si, piu' del solito
:-P)
Ho uno script di backup che effettua l'rsync over ssh di una cartella.
l'SSH si autentica con chiave senza password
Tale script e' in cron come utente backup
Se avvio lo script come utente backup da CLUI tutto bene
Quando invece lo script si avvia dal cron mi restituisce questo errore:
--Errore--
Permission denied, please try again.
Received disconnect from 
192.168.5.1
: 2: Too many authentication
failures for backup
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at
/SourceCache/rsync/rsync-31/rsync/io.c(359)
--Fine Errore--
Ho provato piazzando nello script i path assoluti di tutte le
componenti, impostando le variabili HOME e PATH e giocando con PAM per
vedere se il problema fosse la' o altrove ma non sono venuto a capo di
nulla.
L'ultima cosa che ho cercato, senza trovarla, e' come indicare a SSH di
usare una specifica chiave invece di andarla a cercare in ~/.ssh/
Qualcuno ha idea di come si potrebbe fare?
In risposta a questo messaggio posto lo script completo di backup, se
qualcuno ha suggerimenti in proposito.
Grazie!
EmJey
-- 
Non prendere la vita troppo sul serio... non ne uscirai mai vivo
http://www.joram.it/servizi/consulente.htm

 qualcuno ha suggerimenti in proposito.
[SCRIPT]
#!/bin/bash
##################################################
# Jscript_Backup - Versione 2.0_20080714
# (c)Joram.IT - 
http://www.joram.it
# Rilasciato sotto GPL V.3
##################################################
#Setting Backup
#Temporizzato ore: 03.15
emailErrori='em...@domain.ext'
#Per disattivare il monitor settare la variabile monitor a 0
monitor=0
emailMonitor='em...@domain.ext'
HOME=/home/backup
#Fine Setting Backup
#Info Backup
PATH:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
nomeComputer=`hostname`
dateBackup=`date +%d/%m/%y`
infoBackup="$nomeComputer del $dateBackup"
#Fine Info Backup
#File di log generale
log=/var/log/backup/backup.log
#Files di log quotidiani
fileLog=`date +%Y%m%d`_backup.log
fileLogCompresso=$fileLog.tgz
logq=/var/log/backup/$fileLog
logqc=/var/log/backup/$fileLogCompresso
#Eventuale file di log per gli Errori
fileError=`date +%Y%m%d`_error.log
errorq=/var/log/backup/$fileError
#Fine Files
# Popolare il Registro di backup 1 di 2
echo "
************************************************************************
******** " >> $log
echo "Backup del " `date +%a-%D_alle_%X-%Z` >> $log
echo "Backup del " `date +%a-%D_alle_%X-%Z` >> $logq
# Fine registro di backup 1 di 2
# Intestazione Log per errori 1 di 2
echo "Log ERRORI di backup: $infoBackup" > /tmp/emailmsg.txt
echo "Iniziato:" `date +%a-%D_alle_%X-%Z` >> /tmp/emailmsg.txt
# Fine Intestazione Log per errori 1 di 2
# Comandi di backup
#-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
|-|-|-|-|-|-|
# Eventuale preparazione del backup
#->
# Fine preparazione del backup
# Esecuzione del backup
echo "
************************************************************************
******** " >> $logq
#-> /usr/bin/rsync -avz -e 'ssh -p 22' --exclude=Music
--exclude=.Spotlight-V100
#-> >> $logq 2>> $errorq
#Fine esecuzione del backup
# Pulizia del sistema
#->
#Fine pulizia del sistema
#-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
|-|-|-|-|-|-|
# Fine Comandi di backup
# Popolare il Registro di backup 2 di 2
echo "Terminato: " `date +%a-%D_alle_%X-%Z` >> $log
echo "Terminato: " `date +%a-%D_alle_%X-%Z` >> $logq
# Fine registro di backup 2 di 2
# Intestazione Log per errori 2 di 2
echo "Terminato:" `date +%a-%D_alle_%X-%Z` >> /tmp/emailmsg.txt
echo " " >> /tmp/emailmsg.txt
echo "Errori riscontrati: " >> /tmp/emailmsg.txt
# Fine Intestazione Log per errori 2 di 2
# Gestione Errori
# Invio email del log se ci sono errori
[ -s $errorq ] && cat /tmp/emailmsg.txt $errorq | /usr/bin/mail -s "Log
ERRORI di backup: $infoBackup" $emailErrori
rm -f /tmp/emailmsg.txt
# Fine Gestione errori
# Monitoraggio del backup
# Compressione del log
tar -zcf $logqc $logq
rm -f $logq
# Fine Compressione del log
    if [ "$monitor" != 0 ]; then 
                # Invio email del log 
                [ -s $logqc ] && uuencode $logqc $fileLogCompresso |
/usr/bin/mail -s "Monitoraggio del backup: $infoBackup" $emailMonitor
                # Fine invio email del log
                echo "Log quotidiano compresso, archiviato ed inviato a
$emailMonitor" >> $log
    else
                echo "Log quotidiano compresso ed archiviato" >> $log
    fi
# Fine Monitoraggio del backup
[/SCRIPT]



inserisci un bel:
set -x
e nel giro di trenta secondi saprai cosa va storto
michele

 e nel giro di trenta secondi saprai cosa va storto
Ok, mi hai preso alla sprovvista :-) 
Dove lo inserisco?
Grazie


 Tale script e' in cron come utente backup
[CUT]
prova ad aggiungere all'inizio dello script:
rollback() {
    ssh-agent -k
 
    # ripulisci i file temporanei
    #
    $SUDOCMD /bin/rm -rf $TMPDIR
    exit 1
}         
trap rollback INT TERM EXIT
eval `ssh-agent`
ssh-add /usr/local/.ssh/rsync_rsa
echo "*******************"
echo "* STARTING BACKUP *
echo "*******************"
...
ciao ...
-- 
Never try to teach a pig to sing.
It wastes your time and annoys the pig.

 Dove lo inserisco?
Dovresti sapere cosa significa "set -x", in caso contrario
man bash
michele

 #-> /usr/bin/rsync -avz -e 'ssh -p 22' --exclude=Music
Aggiungi alle opzioni di ssh
-i /path/to/your/key

 -i /path/to/your/key
Grazie, era esattamente l'opzione che non riuscivo a trovare.


 man bash
Ho imparato una cosa nuova: ti sono debitore.


 prova ad aggiungere all'inizio dello script:
Cosi' funziona, grazie per il suggerimento.
