Solved

Issue with ftp shell script

Posted on 2011-09-14
7
431 Views
Last Modified: 2012-06-27
I'm trying to set up a shell script that will ftp a file from another server. Here is the code I have currently:

 
#!/usr/bin/ksh

HOST=testdataload
USER=ollie
PASSWD=*********

exec 4>&1
ftp -nv >&4 2>&4 |&

print -p open $HOST
print -p user $USER $PASSWD
print -p cd /home/ollie/scripts/backup 
print -p binary
#print -p hash
print -p prompt
print -p lcd /home/opike/scripts/backup
print -p mget *.gz
print -p bye

wait
exit 0

Open in new window


This script works some of the time and fails at other times. When it fails, it returns the following output:
Connected to testdataload.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
331 Please specify the password.
230 Login successful.
250 Directory successfully changed.
200 Switching to Binary mode.
Interactive mode off.
Local directory now /home/opike/scripts/backup
221 Goodbye.

The mget *.gz command is just skipped over without any error message being displayed.

When I interactively run the ftp command line client and enter the commands one by one, it always works... and that seems to "unclog" something because right after that I will go back and run the script, and bingo, it works again. But then a few hours later it starts failing again....

This is on CentOS 5.2 btw.
0
Comment
Question by:opike
7 Comments
 
LVL 1

Accepted Solution

by:
dalewalker111 earned 500 total points
Comment Utility
Do you have lftp on the system? While this isn't a ksh solution, I've found this has helped me in the past:
 
#!/bin/sh
HOST=testdataload
USER=ollie
PASSWD=*********

lftp -u ${USER},${PASSWD} ${HOST} <<EoF
cd /home/ollie/scripts/backup
lcd /home/opike/scripts/backup
binary
prompt
mget *.gz
bye
EoF

Open in new window

0
 
LVL 4

Expert Comment

by:rbride
Comment Utility
@dalewalker111 writes the ftp commands using the HERE document. This ensures that the commands are not executed until the login process is finished, so my suggestion is, even if you don't have lftp, to rewrite your script to be similar to dalewalker111's.
0
 

Author Comment

by:opike
Comment Utility
@rbride - Not sure what you mean by the "HERE document".
0
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 
LVL 7

Expert Comment

by:jackiechen858
Comment Utility
print -p mget *.gz


Will there always be a .gz file?

My guess is when you run the script, sometime the gz file is not there yet; so it directly return.


0
 

Author Comment

by:opike
Comment Utility
@jackiechechen858:

I've verified that the .gz file is there. Plus, without changing anything on the server side, if I manually ftp from the client and enter in the commands by hand, it works.
0
 
LVL 4

Expert Comment

by:rbride
Comment Utility
@opike
The HERE document is where you get the input from the script inline.

You wrote in one part <<EOF
...stuff
<<EOF

well that's an example of using the HERE document.
See for example: http://tldp.org/LDP/abs/html/here-docs.html
0
 

Author Closing Comment

by:opike
Comment Utility
Your script works great. Thanks.
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Background Still having to process all these year-end "csv" files received from all these sources (including Government entities), sometimes we have the need to examine the contents due to data error, etc... As a "Unix" shop, our only readily …
How to remove superseded packages in windows w60 or w61 installation media (.wim) or online system to prevent unnecessary space. w60 means Windows Vista or Windows Server 2008. w61 means Windows 7 or Windows Server 2008 R2. There are various …
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Connecting to an Amazon Linux EC2 Instance from Windows Using PuTTY.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now