Posts Tagged ‘expect’

h1

Script per backup remoto

settembre 28, 2007

Quando si ha la necessità di passare diversi files da un pc ad un altro con una certa frequenza (magari tra due pc di casa o da casa all’ufficio), può essere utile avere uno script che faccia tutto questo in modo rapido e senza dovere inserire ogni volta la password del computer remoto. Questo script accetta uno o più files o cartelle come parametro ma non accetta nomi che contengono spazi bianchi. Bisogna soltanto modificare le variabili definite all’inizio e installare il pacchetto expect sull’host locale.

 

$ sudo apt-get install expect

 

Inoltre bisogna anche avere il pacchetto openssh-server installato sull’host remoto dato che questo script fa uso di scp e, ovviamente, un utente valido.

Ecco il codice:

 

#!/bin/bash

 

############################################################

remote_user=”corrob” # utente sull’host remoto

remote_host=”192.168.0.4″ # host remoto

remote_path=”~/Desktop” # percorso sull’host remoto

pwd=”tua_password” # password dell’utente sull’host remoto

############################################################

 

if [ $# -lt 1 ]

then

    echo “Usage: $0 richiede almeno un file come argomento”

    exit

fi

for i in $*

do

    if [ -d $i ]

    then

        par=-r

    elif [ -f $i ]

    then

        par=””

    else

        echo “$i: No such file or directory”

        continue

    fi

expect -c “spawn /usr/bin/scp $par $i $remote_user@$remote_host:$remote_path” -c ‘expect *password*’ -c “send — $pwd\r” -c ‘expect “*100%*\r”‘ -c expect -c ‘wait’ 2> /dev/null

done

 

Una volta copiato il contenuto incollatelo in un file in /usr/src e date a tutti i permessi di lettura ed esecuzione.

$ sudo chmod 555 /usr/bin/nomescript

 

Io l’ho chiamato mybackup. Adesso configurate le 4 variabili all’inizio dello script in modo da contattare il vostro host remoto per il backup.

Infine utilizzate lo script in questo modo:

 

$ mybackup file1 file2 file3

Nota: è necessario avere effettuato l’accesso in ssh all’host remoto almeno una volta altrimenti vi verrà chiesto di autenticare l’host e lo script non funzionerà. Assicuratevi perciò di avere la chiave nel file ~/.ssh/know_hosts.

Annunci