2012-10-16 4 views
0

J'ai inférieur au besoin:script shell Unix récupérer plusieurs fichiers à différents moments

J'ai un processus java, il écrit beaucoup de fichiers dans tous les jours dossier unix, mais en dessous de fichiers a besoin SFTP autre dossier en utilisant Unix Shell Script

TestSD20121016.csv (Il écrit le fichier dans le dossier unix à 16h00 tous les jours p.m) TestSP20121016.csv (Il écrit le fichier dans le dossier unix à 17:00 tous les jours p.m)

Script I écrit comme ci-dessous:

#!/bin/sh 
#------------------------------------------------------------------------ 
# Parameters 
# sftp_file_uploads.sh remoteServer functionalId 
#------------------------------------------------------------------------ 

REMOTE_SERVER=$1 
FUNCTIONAL_ID=$2 
FILE_TO_UPLOAD= ls -lrt TESTSD`date "+%Y%m%d"`*.CSV | awk '/TEST/{ f=$NF };END{ print f }' 


#------------------------------------------------------------------------ 
# Create sftp script 
#------------------------------------------------------------------------ 
rm -f /var/tmp/SFTP_FILE_UPLOAD 
echo "lcd $3" > /var/tmp/SFTP_FILE_UPLOAD 
echo "cd $5" >> /var/tmp/SFTP_FILE_UPLOAD 
echo "put $FILE_TO_UPLOAD" >> /var/tmp/SFTP_FILE_UPLOAD 
echo "bye" >> /var/tmp/SFTP_FILE_UPLOAD 



#------------------------------------------------------------------------ 
# Do sftp 
#------------------------------------------------------------------------ 
echo " Before SFTP " > /tmp/FILE_UPLOAD_LOG 
/usr/bin/sftp -B /var/tmp/SFTP_FILE_UPLOAD [email protected]$1 1>/var/tmp/sftp.log 2>&1 

result=$? 
if [ $result -eq 0 ] 
then 
    echo "SFTP completed successfully" 
else 
    echo "FAILED to SFTP" 
    exit 1 
fi 

exit 0 

Problème est le script est capable de prendre le fichier TestSD20121016.csv mais pas le fichier TestSP20121016.csv, je ne sais pas comment écrire au-dessus du script pour faire sftp deuxième fichier aussi.

Cordialement,

chaitu

Répondre

0

que diriez-vous ajouter la ligne:

FILE_TO_UPLOAD2= ls -lrt TESTSP`date "+%Y%m%d"`*.CSV | awk '/TEST/{ f=$NF };END{ print f }' 

et ligne

echo "put $FILE_TO_UPLOAD2" >> /var/tmp/SFTP_FILE_UPLOAD 

Je pense que vous savez où devrait mettre à droite?

0

Si le problème est un caractère unique, vous pouvez le remplacer par un ?, qui lui dit de correspondre à un seul caractère (tout caractère):

FILE_TO_UPLOAD= ls -lrt TESTS?`date "+%Y%m%d"`*.CSV | awk '/TEST/{ f=$NF };END{ print f }'