Need a Shell Script for FTP


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need a Shell Script for FTP
# 29  
Old 11-25-2014
Need a Shell Script for FTP

Code:
NOW=$(date +"%m%d%Y")
  FILE="XXXXX.TXT"
#I add below for changing the file name with below format
  filename=YYYYL.$(date --date="-1 day" +"%Y%m%d").001
exec > $NOW.log
exec 2>&1

if ! mkdir /tmp/$$
then
        echo "Couldn't create /tmp/$$" >&2
        exit 1
fi

echo "Storing into /tmp/$$" >&2

SrcDir="FTP"
DstDi='/tmp/'

trap "rm -Rf /tmp/$$" EXIT # Clean up temp folder when the script quits by any means

# Check if you can connect.
ftp -nvd $HOST 2>&1 <<EOF | tee $NOW
quote user $ftpuser
quote pass $ftppass
hash
prompt off
ls
EOF

if [ "$?" -ne 0 ]
then
        echo "Couldn't connect" >&2
        exit 1
fi

# Get the remote file
ftp -nvd $HOST <<EOF
quote USER $ftpuser 
quote PASS $ftppass
hash
prompt off
lcd /tmp/$$
bin
get $FILE
bye
EOF

if [ "$?" -ne 0 ] || [ ! -f /tmp/$$/$FILE ]
then
        echo "Couldn't retrieve $FILE" >&2
        exit 1
fi

FTPSIZE=$(awk '$NF==FILE { print $(NF-1) }' FILE="$FILE" "$NOW")
LOCALSIZE=$(wc -c < /tmp/$$/$FILE)

if [ "$FTPSIZE" -ne "$LOCALSIZE" ]
then
        echo "File differs from remote size" >&2
        exit 1
fi

#I add below for copy file from tmp and save the file as specific name 
cp -p /tmp/$$/$FILE /tmp/$filename

# File has successfully transferred, move it from /tmp/$$ into /tmp
mv /tmp/$$/$FILE /tmp
echo "SUCCESSFULLY RETRIEVED $FILE & RENAME AS $filename" >&2


Last edited by maruf; 11-25-2014 at 02:20 PM..
# 30  
Old 11-25-2014
Code:
NOW=$(date +"%m%d%Y")
 FILE="XXXXX.TXT"
#I add below for changing the file name with below format
  filename=YYYYL.$(date --date="-1 day" +"%Y%m%d").001

DATEFILE="/tmp/datefile"

exec > $NOW.log
exec 2>&1

if ! mkdir /tmp/$$
then
        echo "Couldn't create /tmp/$$" >&2
        exit 1
fi

echo "Storing into /tmp/$$" >&2

SrcDir="FTP"
DstDi='/tmp/'

trap "rm -Rf /tmp/$$" EXIT # Clean up temp folder when the script quits by any means

# Check if you can connect.
ftp -nvd $HOST 2>&1 <<EOF | tee $NOW
quote user $ftpuser
quote pass $ftppass
hash
prompt off
ls
EOF

if [ "$?" -ne 0 ]
then
        echo "Couldn't connect" >&2
        exit 1
fi

# Get the remote file
ftp -nvd $HOST <<EOF
quote USER $ftpuser 
quote PASS $ftppass
hash
prompt off
lcd /tmp/$$
bin
get $FILE
bye
EOF

if [ "$?" -ne 0 ] || [ ! -f /tmp/$$/$FILE ]
then
        echo "Couldn't retrieve $FILE" >&2
        exit 1
fi

FTPSIZE=$(awk '$NF==FILE { print $(NF-1) }' FILE="$FILE" "$NOW")
LOCALSIZE=$(wc -c < /tmp/$$/$FILE)

if [ "$FTPSIZE" -ne "$LOCALSIZE" ]
then
        echo "File differs from remote size" >&2
        exit 1
fi

NEWDATE=$(awk 'NR==1 { print substr($1, 9) }' /tmp/$$/"$FILE" )

if [ -f "$DATEFILE" ]
then
        read OLDDATE < "$DATEFILE"

        if [ -z "$OLDDATE" ] || [ -z "$NEWDATE" ] || [ "$OLDDATE" = "$NEWDATE" ]
        then
                echo "old=$OLDDATE, new=$NEWDATE, error" >&2
                exit 1
        fi
fi

echo "$NEWDATE" > "$DATEFILE"

#I add below for copy file from tmp and save the file as specific name 
cp -p /tmp/$$/$FILE /tmp/$filename

# File has successfully transferred, move it from /tmp/$$ into /tmp
mv /tmp/$$/$FILE /tmp
echo "SUCCESSFULLY RETRIEVED $FILE & RENAME AS $filename, new date is $NEWDATE" >&2

# 31  
Old 11-25-2014
The ls format for Microsoft's FTP server appears to be like this:

Code:
----------   1 owner    group         1803128 Jul 10 10:18 source.zip
d---------   1 owner    group               0 May  9 19:45 upload


so I believe size should be $(NF-4):
Code:
FTPSIZE=$(awk '$NF==FILE { print $(NF-4) }' FILE="$FILE" "$NOW")

# 32  
Old 11-26-2014
Need a Shell Script for FTP

I've added the script into shell script menu. After run the menu option it not showing any msg but the log files generated properly in specified location also written the error msg to log..But i need to show the error msg or successful msg after executing the script through menu.
# 33  
Old 11-26-2014
Show your menu script.

Show what it's doing.

Show what you want it to do.
# 34  
Old 11-26-2014
Need a Shell Script for FTP

Code:
function main_menu()
{
    while :
    do
        echo
	clear
        echo "------------------------------------------------------------------------------------"   
        echo ""
	     echo "			  	                 ABC System Limited"
	     echo " 	               	               MAIN MENU"
        echo "------------------------------------------------------------------------------------"
        echo
	echo "		Before"
	echo 
        echo "			              1.Retrieve & Transfer Files"
	echo
	echo "		Start"
	echo 
        echo "			               2.start Batch run"
	echo "			                   3.Generate Report & Monitor log" 
	echo						
        echo "	 After"
	echo
	echo "			                   4.Retrieve & Transfer sys Files"
	echo "			                   5.Retrieve & Transfer DB & log files"
	echo 			
        echo "		                   99.Quit"
        echo""
        echo "--------------------------------v1.0-------------------------------------------------"
        echo ""
        read -p "Select from 1-7 or 99 to Exit: " m_choice
        echo
 
        case "$m_choice" in 
            1)  incoming
                echo
                ;;
            2)  outgoing
                echo
                ;;
            3)  backup
                ;;
            99)  exit 0
                ;;
            *)  echo "Bad Option"
                echo
                ;;
        esac
    done
}
 
function incoming()
{
    while :
    do
        echo
        clear
        echo "------------------------------------------------------------------------------------"
        echo ""
        echo "                   	       ABC System Limited"
        echo "                                 Support Team" 
        echo "------------------------------------------------------------------------------------"
        echo
	echo "			                   Retrieve & Transfer  files"
	echo
        echo " 		             11. Retrieve & Transfer  files1"
        echo "		             12. Retrieve & Transfer  files2"
        echo "			         13. Retrieve & Transfer  file3"
	echo "			             14. Retrieve & Transfer  file4"
	echo 
	echo "			              00. Retrieve all"
        echo ""
	echo "			              99. Exit"
        echo ""
	echo "--------------------------------v1.0-------------------------------------------------"
	echo ""
        read -p "Selct From 1-4 or Select All: " s_choice
        echo
 
        case "$s_choice" in
            11)  /tmp/menu45.sh [run the script]
                ;;
            12)  echo "Sub-Menu Option 2"
                echo
                ;;
	    13)  echo "Sub-Menu Option 3"
                echo 
		;;
	    14)  echo "Sub-Menu Option 4"
                echo 
		;;
	   97)  echo "Sub-Menu Option 5"
                echo
                ;;

            99)  main_menu
                ;;

            *)  echo "Bad Option"
                echo
                ;;
        esac
    done
}
 main_menu
exit 1

if successfull below mess will show
Following file has been Retrieved from FTP
filename here
Renamed as
renamed filename

if error
file size mismatch
Expected file was not in location
expected filename ""
file indicator problem

And Transfer to server
# 35  
Old 11-26-2014
Code:
function main_menu()
{
    while :
    do
        echo
	clear
        echo "------------------------------------------------------------------------------------"   
        echo ""
	     echo "			  	                 ABC System Limited"
	     echo " 	               	               MAIN MENU"
        echo "------------------------------------------------------------------------------------"
        echo
	echo "		Before"
	echo 
        echo "			              1.Retrieve & Transfer Files"
	echo
	echo "		Start"
	echo 
        echo "			               2.start Batch run"
	echo "			                   3.Generate Report & Monitor log" 
	echo						
        echo "	 After"
	echo
	echo "			                   4.Retrieve & Transfer sys Files"
	echo "			                   5.Retrieve & Transfer DB & log files"
	echo 			
        echo "		                   99.Quit"
        echo""
        echo "--------------------------------v1.0-------------------------------------------------"
        echo ""
        read -p "Select from 1-7 or 99 to Exit: " m_choice
        echo
 
        case "$m_choice" in 
            1)  incoming
                echo
                ;;
            2)  outgoing
                echo
                ;;
            3)  backup
                ;;
            99)  exit 0
                ;;
            *)  echo "Bad Option"
                echo
                ;;
        esac
    done
}
 
function incoming()
{
    while :
    do
        echo
        clear
        echo "------------------------------------------------------------------------------------"
        echo ""
        echo "                   	       ABC System Limited"
        echo "                                 Support Team" 
        echo "------------------------------------------------------------------------------------"
        echo
	echo "			                   Retrieve & Transfer  files"
	echo
        echo " 		             11. Retrieve & Transfer  files1"
        echo "		             12. Retrieve & Transfer  files2"
        echo "			         13. Retrieve & Transfer  file3"
	echo "			             14. Retrieve & Transfer  file4"
	echo 
	echo "			              00. Retrieve all"
        echo ""
	echo "			              99. Exit"
        echo ""
	echo "--------------------------------v1.0-------------------------------------------------"
	echo ""
        read -p "Selct From 1-4 or Select All: " s_choice
        echo
 
        case "$s_choice" in
            11)  /home/maruf/menu45.sh
                  printf "Hit enter to return to menu"
                  read REPLY
                ;;
            12)  echo "Sub-Menu Option 2"
                echo
                ;;
	    13)  echo "Sub-Menu Option 3"
                echo 
		;;
	    14)  echo "Sub-Menu Option 4"
                echo 
		;;
	   97)  echo "Sub-Menu Option 5"
                echo
                ;;

            99)  main_menu
                ;;

            *)  echo "Bad Option"
                echo
                ;;
        esac
    done
}
 main_menu
exit 1

This User Gave Thanks to Corona688 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

FTP in Shell Script

Dear All, I am using FTP in a script. But when i exit from the FTP session, the commands written after EOF don't get executed. i.e. ftp <<EOF quote $login quote $password cd /tmp mget *somefile* bye EOF echo $some_variable #This last echo command or whatever piece of commands i... (10 Replies)
Discussion started by: Salman786
10 Replies

2. Shell Programming and Scripting

Help With FTP Shell Script

So i Administer multiple ftp servers that run on dynamic IP's as well as user and password settings are changed by other people constantly. What i need to do is ensure that an FTP is server is up on the IP i check. As well as the login credentials work. Here is a simple script i wrote. However... (2 Replies)
Discussion started by: Noledge
2 Replies

3. Shell Programming and Scripting

FTP within a SHELL script

I am running the following on linux (on a mac): filename="/Users/thisfilename.txt" hostname="ftp.mysite.com" username="myusername" password="mypassword" echo '=======FTP========' ftp -un $hostname <<EOF quote USER $username quote PASS $password binary put $filename quit EOF I... (4 Replies)
Discussion started by: globalnerds
4 Replies

4. Shell Programming and Scripting

Help with Shell script for FTP

#!/usr/bin/ksh export filename=/grid/PowerCenter/inbound/AT/filelist.txt export SOURCE_DIR=/grid/PowerCenter/inbound/AT export ICOMS_FTP_TGT_DIR1=/dw/input/ATU/ICOM_SERV1 export ICOMS_FTP_TGT_DIR2=/dw/input/AT/ICOM_SERV2 export FILE_MASK="ATRPU_RP_ATU" echo "start" ftp_data_file() { ... (15 Replies)
Discussion started by: vsmeruga
15 Replies

5. UNIX for Advanced & Expert Users

FTP in shell script

HI ALL i am writing a shell script in which i have to use FTP command like. FTP <ip address> cd xyz mget* bye but i am not able to perform any command from shell script. once the control goes to FTP, i again have to type all the things. i just want my shell script to take care of the... (8 Replies)
Discussion started by: infyanurag
8 Replies

6. Shell Programming and Scripting

ftp with shell script

Can I ftp to put file with shell script(as bath file) ? Plz give the simple code to do that. My script look like that #!/bin/sh echo "Start ftp" ftp temphost <<EOF put file quit EOF # end This code ignore username & password but I need to input. How to input username &... (8 Replies)
Discussion started by: aungomarin
8 Replies

7. Shell Programming and Scripting

FTP via shell script

Hi, I need to upload a file via ftp. I have given : ftp -n $HOST <<END quote user $USER quote pass $PASSWD prompt off put bus.txt quit END Its throwing a syntax error at "<<" symbol. What should be done for this ?? (2 Replies)
Discussion started by: risshanth
2 Replies

8. UNIX for Dummies Questions & Answers

Shell script for ftp

Hi ,, I am wrting a shell script to ftp a file from remote server but its giving some problem to me.can you help me in debugging this. #!/usr/bin/ksh HOST="some ip" user="user_name" passwd="password" ftp -n $HOST >>END_SCRIPT USER $user $passwd binary prompt get... (3 Replies)
Discussion started by: namishtiwari
3 Replies

9. Shell Programming and Scripting

ftp in shell script

Hi, I have to ftp to a remote machine. i have got the Ip, username and password and the file path.. I need to get the file name with out user intervention in my script.. is there any way to do this.. please help esham (2 Replies)
Discussion started by: esham
2 Replies

10. Shell Programming and Scripting

using ftp in a shell script.

I am trying to ftp some files from a certain directory, but i got an invalid command. does anybody know why i got this error? ftp -v -i -n <<SCRIPT open servername user username password cd /server/logs for file in MCWAS* do put ${file} /home/test/${file} done bye SCRIPT (2 Replies)
Discussion started by: caesarkim
2 Replies
Login or Register to Ask a Question