You are on page 1of 4

FTPBACKUP

Lo scopo di questo demone di mantenere una copia online del contenuto di una cartella selezionata dall utente. Il demone rileva eventuali cambiamenti ogni 6 ore e aggiorna i contenuti se vi sono modifiche pi recenti rispetto a ci che contenuto nel FTP.

Script.sh
#!/bin/sh HOST= USER= PASS= DIR= FILENAME="$0" if [ -z "$HOST" ]; then echo echo read echo read echo read echo read sed sed sed sed else while true; do while ! ping -c1 www.google.com > /dev/null ; do sleep 5 done lftp -u $USER,$PASS $HOST << EOF cd / lcd "$DIR" mirror -Rn bye EOF sleep 6h done fi 'Segui le istruzioni' 'Inserisci l host a cui connetterti' hoster 'Inserisci l user' username 'Inserisci la password' -s password 'Inserisci il percorso locale della directory da mantenere sul ftp' -e dira -i -i -i -i 's/HOST=/HOST='$hoster'/g' ${0} 's/USER=/USER='$username'/g' ${0} 's/PASS=/PASS='$password'/g' ${0} 's:DIR=:DIR='$dira':g' ${0}

Init.d/fileconf

Il seguente file di configurazione permette al sistema di ricoscere ed avviare correttamente lo script sopra presentato,creando un demone attivo in background.Per il test stata utilizzato Fedora 16 e la seguente configurazione ottimale per i sistemi basati su Red Hat.
#!/bin/sh # # FTPBACKUP Mantiene una copia di una cartella su un FTP aggiornandola ogni 6 ore # # chkconfig: 5 99 17 # description: Simple FTP uploader # ### BEGIN INIT INFO # Provides: FTPBACKUP # Required-Start: $network # Required-Stop: # Should-Start: # Should-Stop: # Default-Start: 5 # Default-Stop: 0 1 2 3 4 6 # Short-Description: FTPBACKUP # Description: enable service provided by daemon ### END INIT INFO # Source function library. . /etc/rc.d/init.d/functions exec="PERCORSO DELLO SCRIPT" prog="FTPBACKUP" [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog lockfile=/var/lock/subsys/$prog start() { [ -x $exec ] || exit 5 [ -f $config ] || exit 6 echo -n $"Starting $prog: " daemon $exec retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { stop start } reload() { restart } force_reload() {

restart } rh_status() { # run checks to determine if the service is running or use generic status status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 restart ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart| reload|force-reload}" exit 2 esac exit $?

Utilizzo
Rendere il file eseguibile :
chmod 755 Script.sh

Avviare lo script da terminale per inserire piu facilmente i parametri richiesti. Creare il file /etc/init.d/FTPBACKUP con il corpo qui sopra presentato avendo cura di modificare la parte evidenziata. Scrivere su terminale con permessi di root:
chkconfig add FTPBACKUP chkconfig level 5 FTPBACKUP on

In caso di esito positivo al successivo riavvio scrivendo da terminale:


service FTPBACKUP status

comparir un output dettagliato riguardante il servizio. Capire Script.sh Lo script sopra esposto formato da due sezioni la prima riguardante l inserimento dei dati da parte dell utente, la cui unica peculiarit l utilizzo di sed per scrivere nei campi richiesti, la seconda parte invece si occupa di controllare la presenza di una connessione eseguendo un ping a www.google.com, in caso di risposta a tale comando lo script prosegue connettendosi all host inserito dall utente con i dati predefiniti, in caso contrario aspetta finch non c una connessione disponibile. Ciclicamente lo script esegue le seguenti azioni: si posiziona localmente nella directory da uploadare e remotamente nella radice del FTP(una semplice scelta di comodit) Attraverso luso del comando mirror -Rn si controlla se il contenuto della directory locale presenta una versione aggiornata per uno o pi file di quella remota e in caso positivo procede all upload. Capire init.d/FTPBACKUP Per rendere Script.sh un demone di sistema bisogna farlo attraverso un utility di sistema chiamata chkconfig,nelle prime righe del template ci sono dei campi necessari per rendere possibile a chkconfig di creare dei link simbolici nei runlevel specificati. Nel nostro caso stato scelto il runlevel 5,altri campi riguardano la priorit di avvio/stop del servizio ed eventuali dipendenze necessarie allo script,nel nostro caso $network,il resto del template contiene funzioni definite in /etc/rc.d/init.d/functions necessarie per il corretto funzionamento

You might also like