Lftp command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Lftp command
# 1  
Old 10-04-2017
Lftp command

Hello,
I am trying to write a script that will lftp a file. The parameters are being passed in to the script from ETL tool. The put command is not working. put $file_name $tgt_file_name in the function ftpfile(). When I hardcode the file name with path its working. can some one help me with the error. Since I am only triggering the script from an ETL job. Log is not getting created. Also please let me know how to output a log when script runs.

Code:
#! /bin/ksh
# script to lftp a file.  The parameters are being passed to the script from ETL tool.
# Return Values
# 0 - FTP Successful
# 1 - Insufficient Parameters
# 2 - Directory Not Found
# 3 - FTP Failed
# 4 - File Not Found
#####################################################################################################

host_name=''
user_name=''
passwd=''
remote_dir=''
default_dir=''
file_path=''
file_name=''
file_list=''
ftp_status=0
dir_found=0
temp_size=0
ftp_command=''
ftp_dir_cmd=''
tgt_file_name=''

usage()
{
cat << EOF
Usage: $0 options
options:
   -s      Host Server Name
   -u      User Name
   -p      Password
   -l      Local Directory
   -f      Source File Name
   -t      Target File Name
   [-r     Remote Directory]
   [-d     Default Directory]
   [-c     FTP Command]
EOF
}

ftpfile()
{
#echo "
#quote USER $user_name
#quote PASS $passwd
#$ftp_dir_cmd
#$ftp_command
#put \"$file_name\" \"$tgt_file_name\"
#quit
#"
lftp -c 'set ftp:ssl-allow true ; set ssl:verify-certificate yes; open -u $user_name,$passwd -e "put $file_name $tgt_file_name"; quit" $host_name'
# |
ftp -in $host_name > temp.log 2>&1
temp_size=`ls -l temp.log|tr -s " "|cut -d" " -f5`
if [ $temp_size -ne 0 ]
then
        ftp_status=2
else
        ftp_status=1
fi
}

Thanks

Last edited by vgersh99; 10-04-2017 at 02:49 PM.. Reason: code tags, please!
# 2  
Old 10-04-2017
well.... anything inside the single-quotes doesn't get expanded by the shell and is passed literally.
try:
Code:
lftp -c "set ftp:ssl-allow true ; set ssl:verify-certificate yes; open -u $user_name,$passwd -e 'put $file_name $tgt_file_name; quit' $host_name"

# 3  
Old 10-04-2017
Quote:
Originally Posted by vgersh99
well.... anything inside the single-quotes doesn't get expanded by the shell and is passed literally.
try:
Code:
lftp -c "set ftp:ssl-allow true ; set ssl:verify-certificate yes; open -u $user_name,$passwd -e 'put $file_name $tgt_file_name; quit' $host_name"

Thanks for the reply. Wrong file is getting ftped. Log is not getting created. I want the script to create a log. can you please let me know how to get the log.
# 4  
Old 10-05-2017
You have a usage message but no option-getting code. You don't redirect the output of lftp but redirect an empty ftp session to a log file. You include password in the script. Please use the .netrc file with the format
Code:
machine <address> login <username> password <password>

This may help; it has not been tested but is based on working code. I have used your usage function with options no longer relevant prefixed with #. Your exit codes have been used where possible.
Code:
#!/bin/ksh
usage()
{
cat << EOF
Usage: $0 options
options:
   -s      Host Server Name
   -u      User Name
   [-c]      Continue/retry
#   -p      Password
#   -l      Local Directory
   -f      Source File Name
   [-t      Target File Name]
   [-r     Remote Directory]
#   [-d     Default Directory]
#   [-c     FTP Command]
EOF
}
while getopts u:r:s:f:t:hc opt
do
   case $opt in
      u) user="-u $OPTARG"   ;;
      r) rdir="cd $OPTARG ;" ;;
      h) usage; exit         ;;
      c) cont=-c             ;;
      s) host_name="$OPTARG" ;;
      f) lfile="$OPTARG"     ;;
      t) tgt_file_name="$OPTARG" ;;
   esac
done
shift $(( OPTIND - 1 ))
if [[ -n "${user:+u}${host_name:+s}${lfile:+f}" ]]
then
   printf "Missing required options: %s\n" "${user:+u}${host_name:+s}${lfile:+f}" >&2
   exit 1
fi


PREFIX_CMD="set cmd:fail-exit yes;set ftp:ssl-allow true;set ssl:verify-certificate yes;"	
     # (1) Causes lftp to exit on failure
     # (2) Try to negotiate SSL connection  with  FTP  server
     # (3) Verify server's certificate to be signed by a known Certificate
     #     Authority and not be on Certificate  Revocation List.
if [[ ! -f ${lfile} ]]	# Check it exists
then
   print -u2 "File ${lfile} does not exist"
   exit 4		# exit with return val 4
fi
rfile=${tgt_file_name:-${lfile##*/}}
CMD="put  ${cont} ${lfile} -o ${rfile};"
if [[ -n "${CMD}" ]]
then
   lftp ${user} -e "${PREFIX_CMD} ${rdir} ${CMD} exit" ${host_name} > log_file 2>&1
   ftp_status=$?
fi

if (( ftp_status == 0 ))
then exit 0
else exit 3
fi

I hope that helps.

Andrew
# 5  
Old 10-10-2017
Following is the code that I am running on putty. But its hanging at the CD command.
Code:
set ftps:initial-prot ''; set ftp:ssl-force true;set ftp:ssl-protect-data true;
open ftps://aaa.com -u userid,pwd;
cd /NBSQMPN/FTS_BULK_DIT/;bye

Please suggest

Last edited by Scott; 10-10-2017 at 03:40 PM.. Reason: Use code tags, please...
# 6  
Old 10-11-2017
Quote:
Originally Posted by skatpally
Following is the code that I am running on putty. But its hanging at the CD command.
Code:
set ftps:initial-prot ''; set ftp:ssl-force true;set ftp:ssl-protect-data true;
open ftps://aaa.com -u userid,pwd;
cd /NBSQMPN/FTS_BULK_DIT/;bye

Please suggest
Is this an interactive session, or part of another script? Does the remote directory /NBSQMPN/FTS_BULK_DIT/ exist?

How did you get on with the previous responses to your problem?

Andrew
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Error with LFTP

I use below ftp command to push the file from UNIX server to Mainframe system. (lftp -d -e "set ftp:passive-mode false; put -a ${SPOOLFILE} -o ${FNAME}; exit" -u ${id},${paswd} ${host} ) >> $ftplog To ftp the file successfully i need to get the out put for FNAME as "'filename'" (double... (5 Replies)
Discussion started by: zooby
5 Replies

2. Shell Programming and Scripting

lftp is not working.how to replace lftp with expect utility using same .cfg file.

We have lftp command inside shell file. which is intern calling .cfg file for transferring the file from one server to other. Below command to not working. lftp -e "set net:max-retries 1; set net:reconnect-interval-base 1; put -E -O /destinationdir/inbox/ /sourcedir/test.txt; bye" -u... (4 Replies)
Discussion started by: johnsnow
4 Replies

3. UNIX for Dummies Questions & Answers

Lftp operation

dear all, I need to get files from ftp when only files consist of words 'EUROPE' ftp sources in folder /ftp1/ftp2/ftp3/201409 files inside /ftp1/ftp2/ftp3/201409is as below 201409_EUROPE_citizen.txt 201409_EUROPE_natality.txt 201409_EUROPE_occupancy.txt 201409_ASIA_citizen.txt... (1 Reply)
Discussion started by: radius
1 Replies

4. Red Hat

Lftp issue

I installed KVM and configured two virtual machines in it server1.example.com(192.168.100.193) and tester1.example.com(192.168.100.230).I want to access server1.example.com from tester1.example.com over lftp.As far as networking is concerned between both I do have some doubts. I tried ping and... (5 Replies)
Discussion started by: shazgaurav
5 Replies

5. Shell Programming and Scripting

For loop with lftp command

Hi Experts, I am using the below code for lftp with for loop but getting error at line 18. Not able to understand if am using the for loop wrongly. #!/bin/bash FILE='/home/user/d.txt' FILEName=/home/user/Test/HostName.txt for HOST in $(awk '{ print $0}' $FILEName);do ... (5 Replies)
Discussion started by: sharsour
5 Replies

6. Shell Programming and Scripting

Alternative script for LFTP command

Hi, I was looking for a command which would help sending files parallely to remote server , and lftp is the closest option I could got. Unfortunately when I checked the AIX machine I work on does not has lftp installed. Is there any alternative perl script (or something like that) which I can... (1 Reply)
Discussion started by: vinay4889
1 Replies

7. Shell Programming and Scripting

Lftp with dialog

Hi all. I want to know, if there is any chance to pass lftp listing to CLI dialog. I want to make an interactive CLI ftp manager, based on lftp. Version of dialog I use: root@dlink:~# dialog -v cdialog (ComeOn Dialog!) version 1.1-20100428 (0 Replies)
Discussion started by: n158
0 Replies

8. UNIX for Advanced & Expert Users

lftp: Option to lftp a file, wait and download a file as soon as its created

Please let me know what is lftp options combination to wait and download a file from target as soon as its gets created. I tried with different options but not able to get it working as I need any help would be appreciated (4 Replies)
Discussion started by: bmkux
4 Replies

9. UNIX for Advanced & Expert Users

LFTP Mirroring

LFTP Mirroring We are planning to use lftp to mirror some of the files and directories on to the remote server. What we exactly want to do is mirror some of the directories and exclude some of the the directories from "/" i.e. main root. . What lftp is doing is... (0 Replies)
Discussion started by: sameerarora
0 Replies

10. UNIX for Dummies Questions & Answers

lftp transmission error help

We have installed lftp version 3.4.7. When trying to send a file it loops on sending. It appears that the lftp sends about 130k then attempts to verify transmission (with a head command maybe). The receiver is pulling the data immediatly behind the firewall and does not appear to be answering... (0 Replies)
Discussion started by: Iversog
0 Replies
Login or Register to Ask a Question