Estudi de programació i serveis informàtics

Script sincronització de carpetes desatesa amb expect + ssh + rsync

dimarts, maig 1st, 2012

El petit script que publico a continuació és un exemple bàsic del que es pot aconseguir amb la comanda expect de Unix, que ens permetrà automatitzar l’execució de la comanda ssh contra un servidor remot que contingui la carpeta a sincronitzar. La sincronització la realitza la comanda rsync, i prèviament s’hauran de declarar les credencials ssh a les variables de l’script.

Except permet interactuar amb els diàlegs de les comandes de terminal i respondre les questions per executar-les. En aquest cas, respon a “yes” quan ssh pregunta si es vol confiar el la connexió, i seguidament li introdueix la contrasenya.

Per utilitzar aquest script convé canviar les variables per valors vàlids.

#!/usr/bin/expect -f

set host 0.0.0.0
set user xxx
set password yyyyyy
set remote_path /home/user/folder/
set local_path /home/user/folder/
set portNumber zzzz

# disables the timeout, so script waits as long as it takes for the transfer
set timeout -1

# call rsync
spawn rsync -avz -e "ssh -p $portNumber" $user@$host:$remote_path $local_path

# avoids that if the output is to large, the earlier bytes won't be fotgotten
match_max 100000

expect {
        "yes/no" { send "yesr" }

        # we're expecting the password prompt, we use a pattern so it can be anything that contains password: $
        "*?assword:" { send "$passwordr"}
}
# send a newline to make sure we get back to the command line
send -- "r"

# wait for the end-of-file in the output
expect eof

Aquest script combinat amb un cron, pot ser una bona eina per a descarregar còpies de seguretat d’un servidor remot. Per a més informació sobre la programació amb except podeu consultar aquesta pàgina d’exemples http://wiki.tcl.tk/11583 de la wiki del llenguatge de programació TCL.

 


Etiquetes: , , ,

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir el correu brossa. Aprendre com la informació del vostre comentari és processada