[FTP] entre 2 serveurs

Résolu/Fermé
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011 - 12 mai 2005 à 13:31
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 8 févr. 2006 à 10:43
Bonjour,

Je souhaiterais utiliser des données d'un serveur de TEST sur un autre serveur (les deux Unix).

Comment faire pour transférer les données du serveur de TEST vers le serveur de traitement?

J'ai déjà un FTP sur le serveur de TEST, mais c'est lourd de faire des copier-coller du contenu des fichiers à traiter.
Comment faire pour que ces fichiers arrivent directment sur le serveur de Traitement?

Sur le serveur de TEST, il y a déjà un CRON qui tourne et qui classe les fichiers dans les bons répertoires.
Dans le serveur de Traitement, je voudrais garder la même configuration.

Merci
A voir également:

13 réponses

Est ce que les fichiers que tu veux transférer sont dans le même répertoire ??
si oui:
- de ton serveur TEST
scp /.../.../* nomutili@serveurtraitement:/emplacement/
- de ton serveur TRAITEMENT
scp nom_utili@serveurTEST:/emplacement/* .

ceci suppose que tu as un serveur ssh d'installer ...
1
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
12 mai 2005 à 14:00
ça marche aussi pour transférer des répertoires, ou c'est seulement sur des fichiers ?
0
si tu mets l'option -r ca sera récursif donc tous les répertoires seront copier aussi
exemple
-essai
|---script
| |---essai.pl
|---script.pdf

scp -r essai/ toto@traitement:temp/
te copira tout le repertoire essai avec ce qu'il contient ...

Je ne sais pas si je suis très clair ...

++
0
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
12 mai 2005 à 14:20
Si ça va j'ai compris
Je tente de le faire avec un CRON sous de serveur TEST
Par contre, je ne peux pas faire de CRON sous le serveur Traitement car je n'ai pas les droits...
En même temps, moi je veux que le tansfert ne se fasse que dans le sens TEST ==> Traitement

Ca peut marcher ?
0
aucun problème...
syntaxe: scp source destination

++
0
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
17 mai 2005 à 11:28
Est-ce que ça peut marcher dans un CRON ?
C'est à dire pour le lancer toutes les 20 min ?
0
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
17 mai 2005 à 11:42
Est-ce que c'est possible de faire un shell pour pouvoir l'utiliser dans le CRON ?

la commande scp ne fonctionne pas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
17 mai 2005 à 13:04
Salut Sandrill0n,

Utiliser scp en mode batch suppose que tu gères une authentification automatique. C'est faisable, mais c'est un peu compliqué à mettre en place (avec des certificats).

Vu que tu as déjà un serveur FTP sur le serveur d'origine des données et qu'il s'agit simplement d'en downloader le contenu, tu pourrais simplement utiliser wget pour ce faire. Cet outil permet de downloader récursivement le contenu de répertoires et se trouve en général installé sur tous les Linux.

Vois :

http://www.commentcamarche.net/forum/affich-1332787#2

Que l'accès ftp soit anonyme ou nécessite un mot de passe, tu peux t'en servir en mode batch.


Dal
0
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
17 mai 2005 à 13:15
Ben je suis désolée mais wget ne fonctionne pas non plus...

Je travaille sous Unix (Solaris)

Je me suis peut-être mal exprimée...
En fait, ce que je voudrais c'est tranférer un fichier d'un serveur Unix (Test) vers un autre serveur Unix (Données). Je voudrais que cet envoi soit automatisé dans un CROn (comme la génération du fichier que je souhaite récupérer).

Un programme shell existe avec cette commande (parmis tout le traitement des fichiers qui ne m'interresse pas) :
ftp -v -i -n server <<-%
user login passwd


Mais pour le reste (récupération du fichier voulu) je ne sais pas comment faire...
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
17 mai 2005 à 15:35
Salut,

1.

Ben je suis désolée mais wget ne fonctionne pas non plus...

Oui c'est désolant... car wget fonctionne très bien. Tu ne fournis aucune indication sur la syntaxe que tu as utilisée et les messages d'erreur que tu as pu avoir.

Je travaille sous Unix (Solaris)

wget est un programme GNU. J'ignore si celui-ci est installé sur ta version de Solaris et si les options sont les mêmes. Voilà la page de manuel de wget http://annys.eines.info/cgi-bin/man/man2html?wget+1

Compare la avec ta page de manuel man wget (et lis là aussi).

En fait, ce que je voudrais c'est tranférer un fichier d'un serveur Unix (Test) vers un autre serveur Unix (Données)

Je croyais que tu voulais récupérer un grand nombre de fichiers ?

2.

Pour récupérer un seul fichier, tu peux faire un script shell comme celà :

DDirectory="/le/rep/distant/"
LDirectory="/le/rep/local/"
Username="toto"
Password="totopasswd"
Server="ftp.monserveur.net"

ftp -i -n $Server <<End-Of-Session
user $Username $Password
binary
bell
lcd $LDirectory
cd $DDirectory
get lefichierarecuperer
bye
End-Of-Session


Avec wget, tu fais celà :

cd /le/rep/local/
wget ftp://toto:totopasswd@ftp.monserveur.net/le/rep/distant/lefichierarecuperer


3.

Si en fait tu veux récupérer un grand nombre de fichiers tous situés dans un répertoire avec d'éventuels sous-répertoires et tu ne veux pas tous les taper, tu devras utiliser un autre outil qui ait des fonctions de récursivité, sauf à ce que le client ftp de Solaris ait déjà ces fonctionnalités (ce dont je doute, mais tu peux consulter man ftp pour voir). Ce n'est pas le cas du client ftp de Linux et de FreeBSD en tout cas.

Si tu veux télécharger un répertoire entier et son contenu récursivement, en utilisant wget, tu fais wget ftp://toto:totopasswd@ftp.monserveur.net/le/rep/distant/

Avec les options :

--no-host-directories
--cut-dirs=number
--recursive
--level=depth

Tu peux contrôler la façon dont l'arborescence est reconstruite localement et le niveau de récursion.

4.

Je voudrais que cet envoi soit automatisé dans un CROn (comme la génération du fichier que je souhaite récupérer).

Sauf erreur, ce que tu veux faire, ce n'est pas un "envoi", c'est un "téléchargement". Quant à la façon dont le fichier que tu récupères est généré, sauf erreur également, celà n'a pas de rapport avec ta question.

En tout état de cause, je suppose que tu sais faire une entrée crontab.

5.

Un programme shell existe avec cette commande (parmis tout le traitement des fichiers qui ne m'interresse pas)

Je suppose que tu veux dire que tu as trouvé un script sur ta machine qui a été fait par quelqu'un d'autre et qui, entre autres choses, scripte la commande ftp comme tu l'indiques. Mais c'est un peu elliptique.

6.

Teste le script que tu réaliseras en le lançant manuellement avant de le tester dans un crontab. Dans ton script shell mets les chemins absolus de toutes les commandes utilisées. Si le script fonctionne mais pas le CRON, regarde les messages d'erreur dans les logs de CRON.


Dal
0
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
17 mai 2005 à 16:11
Merci pour toutes ces infos...

Je vais essayer et voir si ça marche

Je mettrai les résultats...
0
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
17 mai 2005 à 16:51
Alors, chose promise, chose due....

Les Username et Password ont été modifiés (confidentialité oblige)

Programme shell : "send_to_volnay"
#!/usr/bin/csh

DDirectory="/home/synergy/sandra/ROYAT/"
LDirectory="/export/home/kthmgr/crondir/"
Username="sandra"
Password="azerty"
Server="httpsyn"

ftp -i -n $Server <<End-Of-Session
user $Username $Password
ascii
bell
lcd $LDirectory
cd $DDirectory
get pareto.log
bye
End-Of-Session


Résultat du lancement manuel :
DDirectory=/home/synergy/sandra/ROYAT/: Command not found
LDirectory=/export/home/kthmgr/crondir/: Command not found
Username=sandra: Command not found
Password=azerty: Command not found
Server=httpsyn: Command not found
Server: Undefined variable


Apparement, ça a pas l'air de marcher...
0
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
17 mai 2005 à 18:43
1) Solution par ssh

Tu peux utiliser le scp comme dit précedemment sous réserve :

- que tes serveurs ssh (service sshd start) soient lancés sur les serveurs, et que les clients possèdent un client ssh (ssh) !
- pour contourner l'identification, que tu génère des clés ssh.

2) Solution par ftp

Sinon par rapport au ftp tu as des alternatives comme sftp (à mi chemin entre ftp et ssh). Je me demande si un bon vieux lftp pour la solution ftp pur ne te permettrait pas de stocker les favoris et te permettre de te connecter direct...

3) Solution par wget

Ca marche si tes serveurs ont un serveur http de lancé (httpd, apache...), et que les fichiers sont situés dans l'arborescence de ton site (/var/www/html/...)

Bonne chance
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
18 mai 2005 à 09:31
Hello :)

Sandrill0n :

La syntaxe de déclation de variables que je t'ai donnée dans mon exemple vaut pour le shell sh. Si tu utilises csh, tu dois utiliser la syntaxe du C shell pour la déclaration de variables :

set DDirectory="/home/synergy/sandra/ROYAT/"
set LDirectory="/export/home/kthmgr/crondir/"
set Username="sandra"
set Password="azerty"
set Server="httpsyn"

Celà devrait passer sans erreurs de syntaxe désormais.

mamiemando :

wget est un client ftp aussi et qui gère non seulement la récursion comme je l'indiquais, mais aussi la continuation d'un transfert interrompu (option -c). Je parle de ma version qui est GNU Wget 1.8.2, mais ces fonctionnalités figurent depuis longtemps dans wget.


Dal
0
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
18 mai 2005 à 10:27
J'ai fait ce que tu m'as dit (mettre "set" devant les lignes de commandes)

En le lançant manuellement j'obtiends ça comme erreur :
End-Of-Session: << terminator not found


Ca veut dire quoi ?
0
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
18 mai 2005 à 15:00
Vu Dal ;o) J'utilise pas souvent wget ;o)
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
18 mai 2005 à 11:00
Re :)

Je ne suis pas très familier du C Shell. Apparemment il exige aussi que l'indicateur de terminaison soit échappé.

Essaye comme celà :

ftp -i -n $Server << \End-Of-Session
user $Username $Password
ascii
bell
lcd $LDirectory
cd $DDirectory
get pareto.log
bye
\End-Of-Session


Dal
0
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
16 juin 2005 à 16:41
Re tout le monde !!!

J'ai fais un super programme ksh qui marche nickel en manuel :
sendlog_to_volnay
#!/bin/ksh
##################################
#Envoi de pareto.log vers Volnay #
##################################

#On se met dans l'inbox (directory d'envoi dans synergy)
cd ${KI_DIR_CRONDIR}   #var d'env pour : /export/home/kthmgr/crondir/

#y a t-il des fichiers a envoyer?
rep=$(/usr/bin/ls)
if [ "$rep" != "" ]
then
	
	#On fait un ftp sur volnay uniquement si elle repond au ping
	PING=`/usr/sbin/ping httpsyn | grep -i alive | wc -l`
	if [ $PING = 1 ]
	then
		ftp -v -i -n httpsyn <<-%
		user sandra Azerty
		ascii
		put sm3_0.log
		put sm2_5.log
		put sm3_5.log
		put sm5ap.log
		put sm5lp.log
		put sm5cb.log
		put hdtmos.log
		close
		bye
		%
		
	fi
	
fi


Donc, il marche très bien quand je le lance dans le shell.

Par contre quand je l'insère dans le CRON, plus rien...
Je ne reçoit pas les fichiers sur mon autre serveur...
J'ai fais les fichiers de sortie et d'erreur et voici le résultat :
fichier de sortie :
Connected to httpsyn.ea.freescale.net.
220 volnayc2 FTP server (Version 1.1.214.8 Fri Apr 20 07:27:42 GMT 2001) ready.
331 Password required for sisa01c.
230 User sandra logged in.
?Invalid command
200 Type set to A.
200 PORT command successful.
553 Could not determine cwdir: No such file or directory.
?Invalid command
?Invalid command
221 Goodbye.

Fichier d'erreur :
/export/home/kthmgr/crondir/sm3_0.log: No such file or directory
/export/home/kthmgr/crondir/sm2_5.log: No such file or directory
/export/home/kthmgr/crondir/sm3_5.log: No such file or directory
/export/home/kthmgr/crondir/sm5ap.log: No such file or directory
/export/home/kthmgr/crondir/sm5lp.log: No such file or directory
/export/home/kthmgr/crondir/hdtmos.log: No such file or directory


Comment puis-je faire pour pouvoir lancer ce script dans le CRON ?
Faut-il faire une autre manip à la place du script ?
0
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
23 juin 2005 à 11:32
Re !

Comment puis-je faire pour copier un répertoire entier en utilisant cette methode ?

#On se met dans l'inbox (directory d'envoi dans synergy)
cd /var/opt/applications/mo/   

pwd

#y a t-il des fichiers a envoyer?
rep=$(/usr/bin/ls)
if [ "$rep" != "" ]
then
	
	#On fait un ftp sur volnay uniquement si elle repond au ping
	PING=`/usr/sbin/ping httpsyn | grep -i alive | wc -l`
	if [ $PING = 1 ]
	then
		ftp -v -i -n httpsyn <<-%
		user sandra Azerty
		#ascii
		cd /home/synergy/sandra/WAFER/
                pwd
		put Report -r
		close
		bye
		%
		
	fi
	
fi


Le répertoire Report est celuique je veux copier

Quand je lance le programme j'ai ce message d'erreur :
"Report: not a plain file"
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
23 juin 2005 à 14:49
Je comprends que "Report" est un répertoire local et que tu veux en uploader le contenu sur ton serveur ftp.

Tu fais un "lcd" dans "Report" et tu fais un "mput *"

voir "man ftp"

S'il y a des sous-répertoires dedans, et que tu veux les transférer aussi, il te faudra utiliser un client ftp récursif (cf. mon post <10> où j'ai déjà traité la question).


Dal
0
redlightdistrict Messages postés 1 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 8 février 2006
8 févr. 2006 à 10:05
Salut Dal,

dans ton post <10> tu raportes justement que le client FTP sur Linux par defaut n est pas recusrif.

Sais-tu lequel a cette fonction de recursivite pour uploader beacoup de fichiers et repertoires ?

Merci
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083 > redlightdistrict Messages postés 1 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 8 février 2006
8 févr. 2006 à 10:35
Salut Redlightdistrict,

Une réponse est dans ce même post <10>, dans sa partie 3 : wget est, entre autres choses, un client ftp avec des fonctions de récursivité (et même de continuation de transferts interrompus), avec la syntaxe mentionnée et en utilisant les options de ligne de commande qui te conviennent (dont j'ai également donné un échantillon).

Vois man wget

wget est souvent installé par défaut sur les distributions Linux.


Dal
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083 > [Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024
8 févr. 2006 à 10:43
oops,

je viens de réaliser que tu parles d'uploader des fichiers... (wget est approprié pour le téléchargement ftp)... hmm

Dans ce cas vois plutôt lftp ou ncftp

- http://lftp.yar.ru/

- http://www.ncftp.com/ncftp/

Voilà un exemple avec lftp : http://pesche.schlau.ch/2005/02/14/intelligent-ftp-upload-with-lftp/


Dal
0