Script Shell: Transférer le contenu de répértoires par SCP

Suite à l’article du ftp, j’ai eu à faire une mise à jour d’un répertoire vers un serveur distant. Il ne faut copier que seulement ce qui a changer
le jour même.

J’ai pour cela utilisé scp dans un script, et placé ce dernier dans un script.

Pour commencer, il faut donc faire en sorte que scp ne demande pas de mot de passe.

Pour cela procédons de la sorte:

Nous utiliserons le cryptage DSA.

Commençons par créer notre paire de clés ssh, clé publique/clé privée.

ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/votre_user/.ssh/id_dsa):

Laissons cela par défaut en appuyant sur entrée.
Il apparait alors cette phrase:
Enter passphrase (empty for no passphrase):
Il est très important pour notre utilisation de laisser VIDE cette phrase.
Appuyons donc sur entrée.

Apparaît alors cette phrase:
Enter same passphrase again:
Appuyons de nouveau sur entrée.

En faisant la commande ls -l dans /home/votre_user/.ssh, nous remarquons que nos deux clés(publique et privée) on bien été créée. Nous avons en effet id_dsa et id_dsa.pub.

Il faut maintenant transférer la clé publique sur le serveur, puis copier son contenu dans /home/votre_user/.ssh/authorized_keys:
cat id_dsa.pub >> /home/votre_user/.ssh/authorized_keys.

Voila, maintenant ssh et scp ne devraient plus demander de mot de passe.

Passons maintenant au script shell:

Script shell

#!/bin/bash

#fonction copy qui permet de faire la meme chose pour tous les sous-répertoires
copy()

{
cd /home/vince/rep/$1
#On récupère le nom de tous les fichiers datant d’aujourdh’ui
for i in `ls -lt|grep 03-10 | cut -d ":" -f2|cut -d " " -f2`
do
#on lance le transfert
scp -r $i 192.168.0.1:/home/vince/rep/$1
done
}

#On choisit les sous-répertoires dont on veut copier le contenu
copy sous_rep1
copy sous_rep2
copy sous_rep3
 

Seul truc, c’est que je dois changer la date manuellement tous les jours. Si quelqu’un à un truc, je suis preneur!

, , , ,
Vus : 3275
Publié par Tchouvince : 10