ecrire un script shell avec bash

ecrire un script shell avec bash - Shell/Batch - Programmation

Marsh Posté le 27-07-2008 à 12:46:27    

Bonjour tous le monde,
 
Je veux ecrire un script shell qui va regarder un répertoire précis dans la machine X. Dès
qu'il voit apparaître des fichiers txt  il devra les copier vers une machine Y dans un répertoire
précis, pour cela j'ai utilisé la commande 'rsync'.
 
J'utilise aussi la commande 'dnotify -CRM' qui a pour objectif de surveiller mon repertoire.
 
Je lance mon script shell avec la commande "dnotify -CRM /home/Stef/NePasModifier -e.monscript"
 
Mon script shell est le suivant:
 
#!/bin/bash
rsync -a -e ssh /home/user/*.txt user@ip:/home/user
 
Mais avec ça '*.txt' il me copie tous les fichiers avec l'extension .txt mais moi je veux  copier seulement le fichier qui est arrivé avec l'extension .txt et non pas tous.
 
Merci pour votre aide.

Reply

Marsh Posté le 27-07-2008 à 12:46:27   

Reply

Marsh Posté le 27-07-2008 à 13:44:17    

et comment tu sais le trouver ce fameux fichier ?

Reply

Marsh Posté le 27-07-2008 à 17:36:32    

Svp J'ai pas compris votre réponse.
MErci

Reply

Marsh Posté le 27-07-2008 à 17:56:06    

le monsieur te dit que rsync c'est pas un magicien, il fait ce que tu lui demandes et si tu lui demandes de sync tous les "*.txt" ben il vas tous les syncher. Si tu veux un autre comportement, faut lui dire explicitement quels fichiers tu veux copier. Donc à toi de trouver comment déterminer quel fichier a été modifié et est à synchroniser.


Message édité par masklinn le 27-07-2008 à 17:56:30

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 27-07-2008 à 18:12:44    

Voila c'est mon problème au fait.
Puisqu'à l'arrivé d'un nouveau fichier que mon script donc rsync sera déclenchée.
Donc comment je lui dis qu'il faut copié le nouveau fichier seulement oubien le  rsync sais qu'il ne faut pas recopier les fichiers déjà copié.
 
autre chose, il me demande à chaque fois de faire entrer le mot de passe malgré que j'ai fait ces deux commandes  
 
ssh-keygen
scp  Source/.ssh/id_rsa.pub user@ip:Dest/.ssh/authorized_keys
 
Svp aidez moi.
Merci

Reply

Marsh Posté le 27-07-2008 à 21:27:33    

bah vérifie les droits de ~/.ssh/authorized-keys

Reply

Marsh Posté le 27-07-2008 à 22:27:41    

nina08 a écrit :


Donc comment je lui dis qu'il faut copié le nouveau fichier seulement oubien le  rsync sais qu'il ne faut pas recopier les fichiers déjà copié.

 

Si c'est une synchro "miroir", rsync le fera comme un grand avec les options qui vont bien.

 

# man rsync

 

Sinon, à toi de maintenir la liste de fichiers quelque part, et déclencher sur la différence. Facilement faisable à coups de ls, diff et xargs.

 
nina08 a écrit :


autre chose, il me demande à chaque fois de faire entrer le mot de passe malgré que j'ai fait ces deux commandes

 

Quel mot de passe? Du compte, ou celui avec lequel la clé privée est cryptée (si tel est le cas)?

Message cité 1 fois
Message édité par Gf4x3443 le 27-07-2008 à 22:28:01

---------------
Petit guide Kerberos pour l'administrateur pressé
Reply

Marsh Posté le 28-07-2008 à 11:11:18    

Gf4x3443 a écrit :


Si c'est une synchro "miroir", rsync le fera comme un grand avec les options qui vont bien.


 
Svp que voulez vous dire par  ça j'ai pas bien compris.
 
 
 

Gf4x3443 a écrit :


 
Quel mot de passe? Du compte, ou celui avec lequel la clé privée est cryptée (si tel est le cas)?


 
Il me demande le mot ed passe du compte:
 
 j'ai suis ce lien pour établir la connexion une fois pour toute avec le serveur:
http://tuxicoman.blogspot.com/2008/0...ymtriques.html
 
Quand je fait la commande:
$ ssh-keygen -t dsa
Il me créé deux fichiers(clé): id_ds,aid_dsa.pub
 
et quand je fait la commande:ssh-copy-id -i ~/.ssh/id_dsa.pub toto@ip_du_serveur_B

Code :
  1. The authenticity of host 'ip du serveur' can't be established.
  2. RSA key fingerprint is 6d:a9:ab:74:b3:44:3e:7e:4f:41:c3:f3:21:8f:e9:0e.
  3. Are you sure you want to continue connecting (yes/no)?


 
 
Je fais yes il m'affiche:Warning: Permanently added 'ip du serveur' (RSA) to the list of known hosts.
 
et il me demande de faire entrer le mot de passe du serveur, quand je le fait il m'affiche:

Code :
  1. 3Now try logging into the machine, with "ssh toto @ip_de_la_machine_B ", and check in:
  2.   .ssh/authorized_keys
  3. to make sure we haven't added extra keys that you weren't expecting.


et si j'essaye d'établir la connexion avec le serveur avec la commade:
ssh toto @ip_de_la_machine_B
il me demande toujour le mot de passe.
 
Svp c'est quoi le problème.

Reply

Marsh Posté le 28-07-2008 à 13:35:50    


Mon problème est: je suis exactement les étapes dans le document http://prendreuncafe.com/blog/tag/ssh
il me génère une clé privé et publique et il me demande de faire entrer un  "passphrase"
 
Mais à la fin quand moi j'essaye d'établir la connexion par: ssh titi@toto.host.org
Il me demande pas le "passphrase" mais plutot il m'affiche ssh titi@toto.host.org's passeword donc je suis obligé de faire entrer le mot de passe.
 
Svp est ce que vous avez une idée sur ça?
Merci.

Reply

Marsh Posté le 28-07-2008 à 16:21:04    

svp je revien sur le probleme de 'rsync'  
 
J'utilise  la commande 'dnotify -CM' qui a pour objectif de surveiller mon repertoire.
 
Je lance mon script shell avec la commande "dnotify -CRM /home/Stef/NePasModifier -e.monscript"
 
Mon script shell est le suivant:
 
#!/bin/bash
rsync -a -e ssh /home/user/*.txt usr@ ip: /home/user
 
Mais moi je veux copier juste le fichier qui vien d'être créé.
Quelqu'un m'a dis que rsync va synchroniser les répertoires. Si tous les fichiers avec l'extension txt sont déjà copiés, il ne va copier que celui qui vient d'être ajouté. Les autres ne seront pas recopiés.
Si c'est le cas mon problème est résolu.
Merci pour votre aide.

Reply

Marsh Posté le 28-07-2008 à 16:21:04   

Reply

Marsh Posté le 28-07-2008 à 18:42:58    

bah c'est simple
 
rsync -a -e ssh /home/user/FichierQuiVientJusteDEtreCree.txt usr@ip:/home/user  
 
de rien

Reply

Marsh Posté le 29-07-2008 à 10:17:16    

Taz a écrit :

bah c'est simple
 
rsync -a -e ssh /home/user/FichierQuiVientJusteDEtreCree.txt usr@ip:/home/user  
 
de rien


 
Mais comment je peux récupérer le fichier qui vient d'être créé, puisque moi je lance mon script avec la commande:"dnotify -CM /home -e.monscript"
et dans mon script je fait la commande 'rsync'
 
Merci

Reply

Marsh Posté le 29-07-2008 à 13:57:08    

Reply

Marsh Posté le 29-07-2008 à 13:57:54    

toutes façons rsync va bien se démerder si le fichier existe déjà. Peut-être que tu ferais mieux de crontab un rsync plutot que d'avoir des tempetes de rsync a chaque changement dans ton dossier.

Reply

Marsh Posté le 29-07-2008 à 18:11:58    

Taz a écrit :

avec un find


Merci pour la réponse.
J'ai pas compris c'est quoi les contrab de rsync.
Explique moi svp.
Merci.

Reply

Marsh Posté le 29-07-2008 à 18:12:47    

Taz a écrit :

toutes façons rsync va bien se démerder si le fichier existe déjà. Peut-être que tu ferais mieux de crontab un rsync plutot que d'avoir des tempetes de rsync a chaque changement dans ton dossier.


Merci pour la réponse.
J'ai pas compris c'est quoi les contrab de rsync.
Explique moi svp.
Merci.

Reply

Marsh Posté le 29-07-2008 à 18:14:55    

nina08 a écrit :


Merci pour la réponse.
J'ai pas compris c'est quoi les contrab de rsync.
Explique moi svp.
Merci.


read the fucking wiki


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 30-07-2008 à 15:47:30    


Merci pour l'explication.
Mais si la commade  'dnotify' fait déja le travail, cad elle surveille l'arivé d'un nouveau fichier, je voie pas pourquoi utilisé les cron.
Merci pour votre aide.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed