I am trying to write a script that will ftp a file to a remote server then end the ftp connection to that server when the file has been transfered.
The problem is when I use the line "ftp 10.0.0.1" in the script. Then ftp wants a username and password. How can I hard code the user name and password in the script and set the script up to enter it automtically.
I also need to use the script to end the ftp session but when the ftp command is called the control moves to the remote computer.
If anyone has any suggestions on how to use a script to create an ftp session, push a file, then end the session one the file is pushed please do tell.
Perhaps you are asking for a script to trasnfer a file using FTP to an FTP server (local or remote).
If so, I would create 2 files:
1) .ftp_put.cfg
2) ftp_trasnsfer.ksh script
Note that I have removed the login parameters from the script.
This way you can modify the login parameter to point to any server without modifying the actual ftp script.
I have come up with the same in different logic.the details of the same mentioned below;
1.Execute_FTP.sh : Main Script which will carry out the functionality of FTP.
2.Parser.sh :IP USERNAME PASSWORD SOURCE FILENAME
3.Upload.sh : FTP Environment Commands .
if [ $# != 6 ]; then
echo "Usage
./Parser.sh IP USERNAME PASSWORD SOURCE FILENAME DESTINATION
where
IP ------------- IP address of remote server
USERNAME-------- username with which to establish ftp session
PASSWORD-------- password for the above mentioned USERNAME
SOURCE --------- source directory
FILENAME ------- name of the file to be ftped
DESTINATION----- path at remote directory at which file is to be kept"
exit
fi
HOME=/home/smvdba/Prasanth/OUT
DIRECTORY=$4
LOG=$HOME/LOG
EXPECTED_RETURN="221 Goodbye."
LIST_OF_FILES=list_of_files
cd $DIRECTORY
ls -lrt $5* >$LIST_OF_FILES
cat $LIST_OF_FILES|while read LINE
do
filename=`echo $LINE|awk '{print $9}'`
size=`echo $LINE|awk '{print $5}'`
if [ "$filename" = "" ]; then
filename=temp
elif [ "$filename" = "_" ]; then
filename=temp
else
echo "Transfering $filename"
sh $HOME/upload.sh $filename $1 $2 $3 $6 >$LOG/ftp_log
RETURN=\`fgrep "221 Goodbye." $LOG/ftp_log\`
if [ "$RETURN" = "$\{EXPECTED_RETURN\}" ]
then
mv $DIRECTORY/$filename $DIRECTORY/FTPED/$filename
else
echo "Unable to establish connection"
fi
fi
done
Upload.sh
FILE=$1
IP=$2
USER=$3
PASS=$4
DESTINATION=$5 #cd OUTPUT/CIRCLE2
ftp -inv $IP<< !EOF
user $USER $PASS
cd $DESTINATION
prompt
asc
put $FILE Temp_$FILE
rename Temp_$FILE $FILE
quit
!EOF