Sincronizzare una cartella con un server SSH
inserito nella categorie: Bash
marchiato con i tag: bash, directory, dropbox, rsync, script, shell, ssh, sync, unix
Avete presente DropBox? Bene, quello che voglio mostravi oggi è un semplice script (semplicissimo) Unix (quindi compatibile con sistemi Linux e Mac), che sincronizza una cartella sul vostro computer, che chiameremo client con un server, che chiameremo server ssh automaticamente.
Pero’ prima di arrivare al codice vero e proprio, abbiamo da fare un po’ di modifiche ssh qua e là.
Bene, supponendo che voi abbiate un server abilitato all’ SSH già a dispozione (se non lo avete configurato vi basta digitare sudo apt-get install openssh-server su Linux, su Mac vi basta abilitare il Login remoto da Preferenze > Condivisione).
Il problema maggiore si presenta nel momento in cui, connettendovi all’ SSH da script, dovete inserire ogni volta la password per autenticarvi.
Se durante la connessione al server SSH la password non vi è richiesta, saltate al punto 2.
Punto 1 – Configurare la chiave pubblica
Creaiamo la chiave, dal client lanciate:
ssh-keygen -t rsa
Il sistema operativo vi chiederà, in ordine, il file dove memorizzare la chiave (fate INVIO lasciando tutto così com’è), e la vostra passphrase, se volete inserila è bene, altrimenti fa niente.
Bene, ora dobbiamo copiare questa chiave sul nostro server, per farlo scrivete:
scp ~/.ssh/id_rsa.pub UTENTESSH@SERVERSSH:~/.ssh/id_rsa.pub
Ora effetuate il login nel vostro server con ssh UTENTESSH@SERVERSSH, il sistema vi chiederà la password dell’utente sul server. Dopodichè lanciate i seguenti comandi (potete anche incollare):
cd ~/.ssh touch authorized_keys cat id_rsa.pub >> authorized_keys chmod 700 authorized_keys exit
Se tutto è andato per il meglio ora dovreste aver finito. Provate a connettervi all’SSH e il sistema non dovrebbe chiedervi la password.
Punto 2 – Scaricare ed editare lo script
Lo script è il seguente:
Copiatelo, e incollatelo in un nuovo file .sh, quindi editate le impostazioni.
Rendetelo eseguible con chmod 777 script.sh, provatelo con ./script.sh.
L’output sarà memorizzato in log.txt
Una buona cosa sarebbe eseguirlo al login
Commenta anche tu!