probleme de transfert ftp en masse - Shell/Batch - Programmation
Marsh Posté le 04-04-2011 à 21:39:41
Moi dit :
moi je tenterai eventuellement un truc du style à la place de
echo "mput $FIC_DEPART" >> $FICHIER_FTP
soit : echo "mput $FIC_DEPART $FIC_ARRIVEE/$FIC_DEPART" >>$FICHIER_FTP
soit : echo "mput $FIC_DEPART ./$FIC_DEPART" >> $FICHIER_FTP
heu j'ai oublié le " ds les deux cas
Marsh Posté le 05-04-2011 à 14:58:18
J'ai commenté les ligne suivante:
#if [ "$DERNIERE_LETTRE" = "/" ]
#then
echo "cd $FIC_ARRIVEE" >> $FICHIER_FTP
echo "mput $FIC_DEPART" >> $FICHIER_FTP
else
echo "mput $FIC_DEPART $FIC_ARRIVEE" >> $FICHIER_FTP
fi
if [ ! -z "$DROITS_FIC" ]
then
echo "chmod $DROITS_FIC $FIC_ARRIVEE" >> $FICHIER_FTP
fi
#fi
Et voila le resultat :
Connected to maat.addim.local.
220 maat.groupe-dumas.com FTP server (Version 1.1.214.4(PHNE_34544) Fri Feb 24 15:03:24 GMT 2006) ready.
Remote system type is UNIX.
Using binary mode to transfer files.
331 Password required for ora10gas.
230 User ora10gas logged in.
200 Type set to I.
Interactive mode off.
250 CWD command successful.
local: TEMP/INT_BRED_00050910140 remote: TEMP/INT_BRED_00050910140
200 PORT command successful.
553 TEMP/INT_BRED_00050910140: No such file or directory.
local: TEMP/INT_BRED_00050913313 remote: TEMP/INT_BRED_00050913313
200 PORT command successful.
553 TEMP/INT_BRED_00050913313: No such file or directory.
local: TEMP/INT_BRED_00050913318 remote: TEMP/INT_BRED_00050913318
200 PORT command successful.
553 TEMP/INT_BRED_00050913318: No such file or directory.
local: TEMP/INT_BRED_00450910202 remote: TEMP/INT_BRED_00450910202
200 PORT command successful.
553 TEMP/INT_BRED_00450910202: No such file or directory.
local: TEMP/INT_BRED_00750910851 remote: TEMP/INT_BRED_00750910851
200 PORT command successful.
553 TEMP/INT_BRED_00750910851: No such file or directory.
local: TEMP/INT_BRED_00750912530 remote: TEMP/INT_BRED_00750912530
200 PORT command successful.
553 TEMP/INT_BRED_00750912530: No such file or directory.
local: TEMP/INT_BRED_00750912758 remote: TEMP/INT_BRED_00750912758
200 PORT command successful.
553 TEMP/INT_BRED_00750912758: No such file or directory.
local: TEMP/INT_BRED_00850911098 remote: TEMP/INT_BRED_00850911098
200 PORT command successful.
553 TEMP/INT_BRED_00850911098: No such file or directory.
local: TEMP/INT_BRED_00850913319 remote: TEMP/INT_BRED_00850913319
200 PORT command successful.
553 TEMP/INT_BRED_00850913319: No such file or directory.
local: TEMP/INT_BRED_00850913331 remote: TEMP/INT_BRED_00850913331
200 PORT command successful.
553 TEMP/INT_BRED_00850913331: No such file or directory.
221 Goodbye.
Marsh Posté le 04-04-2011 à 20:47:30
Bonjour à tous,
Je vous explique mon problème, on ma demandé de faire un transfert automatique de fichiers ftp, pour cela j'ai utilisé un shell qui existe déjà au taf et j'ai juste modifié le put en mput, mais quand je l'exécute il me dit no such file directory!!!
Alors que ce script il fonctionne bien quand on veut transférer un fichier, car ce shell il fait appelle à un fichier ou les parametres sont rensignés en dur exemple :
traitement:ftpemi:maat:login:pwd::temp/fichier${horodatage}mnt/recette/socrat/recette/
et quand il sagit de certain fichiers j'essaye cette syntaxe : avec le meme script en changeant juste le put en mput le script ne reconnait pas le chemin d'arriver!!!
traitement:ftpemi:maat:login:pwd::temp/fichier*mnt/recette/socrat/recette/
Le script et le suivant si quelqu'un pourrait apporter ses lumières ? en vous remerciant.
#!/usr/bin/ksh
#####
# Gestion de l'execution en simulation ou reel
#
if [ "${UPR_EXECUTION}" = "R" ]
then
REEL=OK
else
REEL=
fi
LIGNE_MANIP=$1
if [ -z "${HORODATAGE}" ]
then
HORODATAGE=$(date +"%Y%m%d_%H%M%S" )
fi
TRAITEMENT=$(echo $LIGNE_MANIP | cut -d: -f1)
TYPE_MANIP=$(echo $LIGNE_MANIP | cut -d: -f2)
SERVEUR_FTP=$(echo $LIGNE_MANIP | cut -d: -f3)
USER_FTP=$(echo $LIGNE_MANIP | cut -d: -f4)
PASS_FTP=$(echo $LIGNE_MANIP | cut -d: -f5)
MODE_FTP=$(echo $LIGNE_MANIP | cut -d: -f6)
FIC_DEPART=$(echo $LIGNE_MANIP | cut -d: -f7)
FIC_ARRIVEE=$(echo $LIGNE_MANIP | cut -d: -f8)
DROITS_FIC=$(echo $LIGNE_MANIP | cut -d: -f9)
echo "########################################################################"
echo "# Traitement : $TRAITEMENT"
echo "# Manipulation : $TYPE_MANIP"
echo "# Serveur FTP : $SERVEUR_FTP"
echo "# User FTP : $USER_FTP"
echo "# Pass FTP : $PASS_FTP"
echo "# Mode FTP : $MODE_FTP"
echo "# Fichier source : $FIC_DEPART"
echo "# Fichier arrivée : $FIC_ARRIVEE"
echo "# Droits pour chmod : $DROITS_FIC"
echo "########################################################################"
#####
# Déclaration des constantes
#####
NOM_SCRIPT=$(basename $0)
FICHIER_FTP=${TMP}/$NOM_SCRIPT.${HORODATAGE}.ftp
COMMANDE_FTP="ftp -v -i -n"
#####
# Liste des fichiers à transférer
#####
touch $FICHIER_FTP
echo "user $USER_FTP $PASS_FTP" > $FICHIER_FTP
if [ "$MODE_FTP" = "ASCII" ]
then
echo "ascii" >> $FICHIER_FTP # active le mode 'ascii' (CRLF <-> LF)
else
echo "bin" >> $FICHIER_FTP # desactive le mode 'ascii' (CRLF <-> LF)
fi
#echo "prompt" >> $FICHIER_FTP # désactive le prompt pour mget et mput
###
# Construction du fichier contenant les commandes pour le client ftp
###
if [ ! -z "$FIC_DEPART" ]
then
# recuperation du dernier caractere de FIC_ARRIVEE
DERNIERE_LETTRE=$(echo ${FIC_ARRIVEE} | rev | cut -c1)
# si cette derniere lettre est un "/" alors on considere
# qu'on a afaire a un chemin
if [ "$DERNIERE_LETTRE" = "/" ]
then
echo "cd $FIC_ARRIVEE" >> $FICHIER_FTP
echo "mput $FIC_DEPART" >> $FICHIER_FTP
else
echo "mput $FIC_DEPART $FIC_ARRIVEE" >> $FICHIER_FTP
fi
if [ ! -z "$DROITS_FIC" ]
then
echo "chmod $DROITS_FIC $FIC_ARRIVEE" >> $FICHIER_FTP
fi
fi
echo "quit" >> $FICHIER_FTP
#####
# Exécution des commandes de tranferts à l'aide du client samba
#####
if [ ! -z "$REEL" ]
then
$COMMANDE_FTP $SERVEUR_FTP < $FICHIER_FTP
else
cat $FICHIER_FTP
fi
####
# Suppression des fichiers temporaires
####
rm -f $FICHIER_FTP
---------------
spoutnikousse