Bon bein scavenger, je ne voudrais pas enttacher ton orgueil mais tu ne reponds pas du tout a ma question. Elle est ou ta connexion telnet ou equivalente par script ???
Bon en attendant j'en profite pour donner mon code (aussi clair et détaillé que possible, pour ceux qui ne s'y connaissent pas).
#!/bin/bash
#!---------------------------------------------------------------------!
#! recup_rep_ftp Historiques des interventions !
#!---------------------------------------------------------------------!
#! Date ! Auteur ! Version ! Libelle !
#!---------------------------------------------------------------------!
#! 30/07/04 ! Elise78 sur le ! 1.0 ! Creation !
#! ! forum CCM ! ! !
#!---------------------------------------------------------------------!
#! !
#!---------------------------------------------------------------------!
#----------------------------------------------------------------------#
#
# Script permettant de copier un repertoire complet (une arborescence),
# sur un serveur distant, par connexion ftp
#
# Au prealable :
#
# - Creation du fichier arbo_nomserveurdist.txt, qui contient
# l'arborescence complete a creer et a recuperer sur le
# client, par une connexion telnet
# - Creation du repertoire cible sur le client, soit avec les droit
# du proprietaire final, soit avec un quelconque utilisateur
# en n'omettant pas de donner ce repertoire a l'utilisateur final
# - Executer ce script en ayant les droits root
#
#
# Utilisation de la commande (chemin ajoute dans le PATH) :
#
# recup_rep_ftp <serveur> <login> <passwd> <deb_arbo_serveur> <deb_arbo_client>
# $0 $1 $2 $3 $4 $5
#
# <nom_fic_arbo> <proprio> <groupe> <type_trans>
# $6 $7 $8 $9
#
# $0 recuparbo : nom de la commande shell ( programme )
# $1 serveur : le serveur sur lequel on veut recuperer une partie de
# l'arborescence
# $2 login et $3 passwd : pour la connexion ftp au serveur
# $4 deb_arbo_serveur : le point a partir duquel on veut l'arborescence
# du cote serveur
# $5 deb_arbo_client : le noeud a partir duquel on veut copier, du cote
# client, l'arborescence recuperee sur le serveur
# $6 nom_fic_arbo : nom de fichier de l'arborescence du serveur a recuperer
# $7 proprio : ce sera le proprietaire du repertoire une fois copie sur
# le poste cible
# $8 groupe : le groupe du proprietaire des fichiers sur l'ordinateur cible
# $9 type_trans : option du type de transfert de fichiers : binary ou ascii
#
#
# Ameliorations a prevoir :
#
# - Creation d'un fichier de suppression de l'arborescence en cas d'erreur
# - Ajouter l'option type de transfert : binaire ou ascii (suivant le type
# de telechargement)
# - Ajouter la fonctionalite de choisir le proprietaire final du repertoire
# copie sur le client et de son groupe
# - Voir si le fait de faire un mget en ftp fait la meme chose qu'un
# rcp -rp * ou un rcp -p .*
# - Mettre sous la forme -l login -p passwd -v verbose ... un truc dans
# ce style
# - Faire en sorte que les actions au prealable ne soient pas obligatoires :
# elles devront etre réalisées par le script.
#
#
# Auteur : U.I.M Alias Elise78 sur le Forum CCM
#
#----------------------------------------------------------------------#
# Verification de l'existance des parametres
# S'il n'y a aucun parametre pour le fonction
if [ $# = 0 ]
then
echo -n " Aucun argument en parametre !! "
echo " Veuillez utiliser cette norme : "
echo " \$> recuparbo <serveur> <login> <passwd> <deb_arbo_serveur>
<deb_arbo_client> <nom_fic_arbo> <proprio> <groupe>"
echo
exit -1
fi
# Mettre tous les parametres dans des variables parce qu'un set efface tout
nom_script=$0
serveur=$1
login=$2
passwd=$3
deb_arbo_serveur=$4
deb_arbo_client=$5
nom_fic_arbo=$6
proprio=$7
groupe=$8
# S'il y a les parametres on continue
# il faut etre sous le compte root
echo -e "\n Avant d'executer ce script, il faut avoir creer le "
echo -e "\n fichier de l'arborescence du serveur "
echo -e "\n et il faut etre root \n"
xhost +
# Deplace au bon endroit pour copier le fichier et executer
# la copie de l'arborescence du serveur
cd $deb_arbo_client
# Recuperation du fichier de l'arborescence cree sur le serveur
echo -e "\n ***** Recuperation du fichier de l'arborescence *****"
echo -e "\n **** *** **** cree sur le serveur **** *** ***"
ftp -v -i -n << FIN
open $serveur
user $login $passwd
ascii
cd $deb_arbo_serveur
mget $nom_fic_arbo
bye
FIN
# Pour que le user final puisse le lire et le modifier :
# root donne les droits
chmod 766 $nom_fic_arbo
# Pas utile car je le manip en root : chown $proprio:$group $nom_fic_arbo
# Suppression de la premiere ligne du fichier $6=$nom_fic_arbo et
# redirige vers fichier recuparbo_ftp
sed 's/^././w recuparbo_ftp' $nom_fic_arbo
# Mettre en debut de fichier la chaine 'mkdir '
sed 's/\.\//mkdir \.\//w creerarbo' recuparbo_ftp
# Mettre en debut de fichier la chaine 'rmdir '
sed 's/\.\//rmdir \.\//w deletearbo' recuparbo_ftp
# !!!! Il faut inverser le contenu du fichier pour eviter de l'executer
# autant de fois qu'il y a de noeuds de repertoire
# Le rendre executable
chmod 755 creerarbo
chmod 755 deletearbo
# je le donne a $proprio pour qu'il puisse l'executer sans probleme
chown pegase:users creerarbo.txt
# je me connecte sous $proprio pour que l'arbo lui appartienne
# Creation de l'arborescence cote client
# Recuperation de maniere recursive par ftp des fichiers sur le serveur
su - $proprio << END
echo -e "\n -------- Connexion proprio !! ---------\n"
cd $deb_arbo_client
export PATH=$PATH:/$deb_arbo_client
creerarbo
find . -type d -exec echo {} \; > a.txt
sed 's/\.\///g' a.txt > recup_recursif_ftp.txt
rm -f a.txt # recup_arbo_ftp_recursif.txt
echo -e "-------- Fin connexion proprio !! ---------\n"
exit
END
echo -e "\n -------- Debut telechargement des fichiers --------- \n"
cd $deb_arbo_client
echo -e " pwd : "`pwd`" "
echo -e " serveur : cd $deb_arbo_serveur"
echo -e " client : cd $deb_arbo_client"
echo -e "\n ftp -v -i -n << FIN"
echo -e " open $serveur"
echo -e " user $login $passwd"
echo -e " cd $deb_arbo_serveur"
echo -e " bye"
echo -e " FIN \n"
# On copie le contenue d'un repertoire et on change le proprietaire
for j in `cat recup_recursif_ftp.txt`
do
echo -e "\n\n ** Repertoire serveur : [$deb_arbo_serveur/$j]"
cd $deb_arbo_client/$j
echo " **** Repertoire client : ["`pwd`"]"
ftp -v -i -n << FIN
open $serveur
user $login $passwd
cd $deb_arbo_serveur/$j
mget *
! pwd
! chown pegase:users *
bye
FIN
done
cd $deb_arbo_client
ls -la --color=always $deb_arbo_client
echo -e "\n --- Fin du script de recuperation du repertoire complet ----"
echo -e "\n"
Et ca marche nikel ....
Personnellement ma solution ne me convient a moi-meme que partiellement parce que je ne recupere pas les fichers commencant pas un '.' exemple .env_oracle !! et pour cela faut faire un rcp -rp .* mais sous une connexion telnet d'ou mon besoin de me connecter a distance avec telnet !!
Cordialement, Melle Elise78