Automate FTP process and autorestart on link failure


 
Thread Tools Search this Thread
Special Forums IP Networking Automate FTP process and autorestart on link failure
# 1  
Old 04-24-2008
Automate FTP process and autorestart on link failure

Hi Guys,

i have this lil challenge;

i am to implement an automated script that searches/scans a directory for files then picks and sends this files to a very remote server via an ftp link.
the challenge here is that the ftp link fails due to netwrk issues maybe;
i therefore need to develop a proactive means of detecting the present ftp session is no more active,then quit and restart a new session;
as this files are not supposed to stay inthis location for up to an hour.
someone help pls;
# 2  
Old 04-24-2008
an idea from me - if you have netcat installed use :
nc -z server.com 21
the response should be :
Quote:
Connection to server.com 21 port [tcp/ftp] succeeded!
then echo $? will return 0, on failure will return 1. Check the error code and proceed based on the response.
-z flag just checks for a live listener / daemon on the remote port, without sending the data. This should ensure that the connection is OK.
# 3  
Old 04-24-2008
Sounds like you should really be thinking about replacing that ftp link with something with sane error fallback and graceful degradation.
# 4  
Old 07-16-2008
Quote:
Originally Posted by era
Sounds like you should really be thinking about replacing that ftp link with something with sane error fallback and graceful degradation.
What would you suggest as an alternative to scripted FTP here? I guess there are tools better suited to failing links but have no idea what these would be?
# 5  
Old 07-21-2008
The customary replies would be ssh/scp and/or rsync.
# 6  
Old 08-14-2008
i wouldn't recommend using ftp as scp/sftp are much better easier in error handling and offer much better security.

Anyway, I made a while ago an auto-ftp script, find below some hints:

- In fact you should make your script loop untill a success condition is reached, which in this case means all files are transferred successfully.
- In your script, you should save the ftp output and have it checked to ensure last transfer is ok. this is what I came up with:

I just grabbed this code from the source scripts, so it might not be ready for use. it is just to get the idea.

In fact if you could grep ^226 $resultfile |grep -v "226 bytes" it should be a good indication the file is transmitted successfully.
The reason to grep -v "226 bytes" is in case the file is 226 bytes you'll grep
226 bytes transferred (or something like that).

#syntax:
#analyze_ftpresult <ftpresult file>

function analyze_ftpresult
{

# check rfc 959 on http://www.ietf.org/rfc/rfc0959.txt
#
resultfile=$1
is_error=0
is_noconnect=`fgrep "Not connected" ${resultfile} 2>/dev/null`
is_226=`grep ^"226 " ${resultfile} 2>/dev/null|grep -v ^"${errcode} bytes" 2>/dev/null`
is_250=`grep ^"250 " ${resultfile} 2>/dev/null|grep -v ^"${errcode} bytes" 2>/dev/null`

if [ -z "${is_226}" -a -z "${is_250}" ] ;then
return 1
fi
if [ -n "${is_noconnect}" ] ;then
return 10
fi

${debug} && set +x
# Too much debugging info
for errcode in `echo 421 425 426 450 451 452 500 501 502 503 504 530 550 551 552 553`
do
error=`grep ^"${errcode} " ${resultfile} 2>/dev/null|grep -v ^"${errcode} bytes" 2>/dev/null`
case ${error} in
421|425|426) return 10 ;;
esac
if [ -n "${error}" ] ; then
is_error=`expr ${is_error} + 1`
echo "${stamp} ERROR ${_sfile}: ${error}" >>${somelogfile}
fi
done
${debug} && set -x
return ${is_error}
${debug} && echo "<< end function analyze_ftpresult >>"
}
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Automate [ls]ftp

Heyas Seen some of the ftp posts here and knowing i'll be writing a script using ftp soon, so i thought i'd write a script to automate, or at least simplify some basic tasks with it. I'm currently stuck at handling active/passiv modes. Neither lftp nor sftp seem to support them by arguments,... (3 Replies)
Discussion started by: sea
3 Replies

2. UNIX for Dummies Questions & Answers

To automate a process

CAN ANYONE HELP TO SOLVE i wann write a script to automate a process .i.e, to search files in the FTP server and and if files are there and we hav to bring that files to our system. After copying the files in our system we have to upload the data in the tables. I have scripts to load the... (2 Replies)
Discussion started by: nani1984
2 Replies

3. UNIX for Advanced & Expert Users

TO Automate the FTP process

Plzz Some One Help in this matter I have scripts to load the data into tables and to copy files from ftp to our system. we use to run the scripts every day.... we hav the files in the FTP server and we hav to bring the files to our system and we hav to load the data into the tables. We... (0 Replies)
Discussion started by: nani1984
0 Replies

4. Shell Programming and Scripting

To automate a process

CAN ANYONE HELP TO SOLVE i wann write a script to automate a process .i.e, to search files in the FTP server and and if files are there and we hav to bring that files to our system. After copying the files in our system we have to upload the data in the tables. I have scripts to load the... (0 Replies)
Discussion started by: nani1984
0 Replies

5. Shell Programming and Scripting

How to automate ftp in perl

My situations is I cannot use NET::ftp. So I need to have a way to automate ftp. I know how to do it in ksh: #!/usr/bin/ksh ftp -i -v -n $host_name <<_FTP >> $log_file 2>&1 user $user_name lcd $local_dir cd $remote_dir put $file_name bye _FTP But how can I do it in perl? Note:... (6 Replies)
Discussion started by: egyfan
6 Replies

6. Shell Programming and Scripting

Automate FTP

Hi, Currently, i am using sftp manully to transfer files between two secure servers. Can anyone provide me a sample shell script which can automate the sftp process? (11 Replies)
Discussion started by: borncrazy
11 Replies

7. Shell Programming and Scripting

How to automate an FTP process?

Hello script experts, I am newbie to shell script. But I have to write a shell script (ASAP) where I need to ftp a file on daily basis to a remote server, and send an email with final status. I I should have a properties file with hostname, Userid, and pwd. And a shall script file should read... (1 Reply)
Discussion started by: ksak
1 Replies

8. UNIX for Advanced & Expert Users

Automate FTP

Hi all, I got this piece of code in this forum and I can't seem to get it work. The thread already closed so I just post a new thread. #!/usr/bin/ksh ftp -v -n "YOUR.IP.ADD.RESS" << cmd user "user" "passwd" cd /distant/directory lcd /local/directoryget ssh_install get ( or put) your... (4 Replies)
Discussion started by: CamTu
4 Replies

9. Answers to Frequently Asked Questions

Automate FTP / Scripting FTP Transfers

One of our most frequent questions is how to automate ftp transfers. There are several approaches. Since I'm writing this post, we will start with my favorite technique. :) In Automated FTP task I present a simple example of my ksh co-process technique. And note that later in this thread I... (0 Replies)
Discussion started by: Perderabo
0 Replies

10. UNIX for Dummies Questions & Answers

automate an ftp job

Hi, I am trying to write and automate a ftp job that connects to a IBM mainframe and pulls the same files everyday. To do this I assumen I create a .netrc file in my solaris home directory, then I write a shell script. How do I envoke ftp from a ksh script and pass it the info in .netrc? I... (11 Replies)
Discussion started by: flowrats
11 Replies
Login or Register to Ask a Question