Hello,
I have a shell script that runs every minute to process incoming files delivered externally via SFTP to a directory. Basically the script works and processes the files however I get an error when a new file is delivered into the directory.
Please see my script below. A new file is delivered every day via SFTP from an external source which the script processes into the correct naming convention and it is then imported into our database using curl. We get a new file at 06:05 every day and I get a cron error message delivered to my mail box every morning. However if I then go and change the script and then test it using the same file with cron it will process correctly. However when I come in in the morning I will find that it has failed again - very frustrating!
I have no idea why this is! If someone can suggest anything that may remedy please let me know. I have also included a copy of the error message I get from Cron.
#!/bin/bash
TRANSDATA=/home/tsbftp/transaction_data
WORKING=/home/tsbftp/working
FILES=$(ls $TRANSDATA)
IMPORT=/home/arch3ftp/dfn-dev.arch3systems.com/html/import
for file in $FILES
do
\#change owner of file to root - change permissions for root to full access
echo "$file" > /tmp/formatfile.nfo
chown root $TRANSDATA/"$file"
chmod 777 $TRANSDATA/"$file"
\#Strip out the account number and place into a variable
AN=$\(grep ^00 $TRANSDATA/"$file" | cut -c 3-18\)
\#set current date and time for file name convention and place into a variable
CUDA=$\(date \+%Y%m%d%k%M%S\)
\#Rename Current File with Required Format
mv $TRANSDATA/"$file" $TRANSDATA/$AN"_"$CUDA.a3i
sleep 2
mv $TRANSDATA/$AN"_"$CUDA.a3i $WORKING
echo $? >> /tmp/formatfile.nfo
cp $WORKING/$AN"_"$CUDA.a3i $IMPORT
curl -s http://dfn-dev.arch3systems.com/batches/import/$AN/$CUDA
done
exit 0
As you can see I've added in sleep 2 etc to try and remedy the error I get and tried renaming the file in place then moving etc. Please see error message below from Cron.
/etc/cron.d/format_file.sh:
mv: when moving multiple files, last argument must be a directory Try `mv --help' for more information.
cp: cannot stat `/home/tsbftp/working/1539590548547000_20080305': No such file or directory
I always get the mv error, however if I change the script to do the rename a different way it will work when I test it with cron! However sure enough it will fail when a new file comes in the next day!