FTP and SFTP functionality


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting FTP and SFTP functionality
# 1  
Old 01-28-2014
FTP and SFTP functionality

Hi Friends,

I need to make a Unix script, where i need ftp and sftp functionality.
Let me describe in details:

I need to import few files from remote server, now these remote server either support ftp or sftp not both. So i need a script where my script will try to do ftp first and if it gets succeeded then come out of script and if not then try to do sftp on that server.

Hope i briefed properly, if not please let me know what other information requires. Please help me on this.

TIASmilie
# 2  
Old 01-28-2014
Have you started something? show us what you have tried and where you stuck.
# 3  
Old 01-28-2014
yes i tried few things,

for ftp:

Code:
 ftp -i -n -v ${FTPIP} <<-EOFtp >>${PREPLOG} 2>&1
        user $LOGINID $PASSWD
        cd $LOCALPATH
        binary
        mget *.* 
        dir * $TMPDIR/local.out
        bye

this is working fine but i am getting problem in sftp..please find below the sftp code
Code:
BASEDIR=/home/orozcog
DOWNLOADDIR=${BASEDIR}/ORC
LOGFILE=${BASEDIR}/download_upload_orc_data.log
[ -f ${LOGFILE} ] || touch ${LOGFILE} || error "unable to create the logfile '${LOGFILE}'"
log '=[ Starting Execution ]========================================================='


SFTP_USER='abc'
SFTP_PASSFILE=${BASEDIR}/xyz.txt
SFTP_HOST=sftp.exapmle.com
commercial_file=PPS_Commercial_Data.TXT

cd ${DOWNLOADDIR}
sshpass -f ${SFTP_PASSFILE} sftp -v ${SFTP_USER}@${SFTP_HOST} <<END_OF_SESSION >> ${LOGFILE} 2>&1
get ${consumer_file}
get ${commercial_file}
bye 
END_OF_SESSION
Exit_State=$?
[ ${Exit_State} -eq 0 ] || echo "SFTP return error ${Exit_State}"


Also i tried these two codes individually, do i need to take care of something while using ftp and sftp together, or it will just work fine if ill add IF condition


Thank You,
# 4  
Old 01-28-2014
Getting what problem?
# 5  
Old 01-28-2014
I thought that (condition) || ELSECASE || ELSECASE2 doesnt work.
To me, this line looks like that but tries to achieve something diffrent..
Code:
[ -f ${LOGFILE} ] || touch ${LOGFILE} || error "unable to create the logfile '${LOGFILE}'"

If file doesnt exist you want to create it, and if creation fails print the message, either way, my linux doesnt know the command 'error'.

If that is true, i'd change to:
Code:
[ ! -f ${LOGFILE} ] && (touch ${LOGFILE} || error "unable to create the logfile '${LOGFILE}'")

Note the (), wich executes the code in a 'subshell' and it wont report "unable to create file" if file already exists.

Either way, if touch cant create a file, it'll report itself...
Example: (changed error to echo)
Code:
[sea@localhost ~]$ LOGFILE=/root/log
[sea@localhost ~]$ [ ! -f ${LOGFILE} ] && (touch ${LOGFILE} || echo "unable to create the logfile '${LOGFILE}'")
touch: cannot touch '/root/log': Permission denied
unable to create the logfile '/root/log'

Hope this helps

EDIT:
Also, your EOFtp misses the 2nd entry which closes the command.
But i assume that's a copy-paste error Smilie

Last edited by sea; 01-28-2014 at 12:17 PM..
# 6  
Old 01-30-2014
i tried below script:
Code:
log=/opt/app/vertica/cdr/tmp/hpcom/sftp.txt
LOGINID=abc
HOST=sftp2.xyz.com
echo "starting ftp & sftp...." > $log
ftp -i -n -v $HOST <<-EOFtp >$log
user $LOGINID $PASSWD
bye
EOFtp
rc=$?
if [[ $rc = 0 ]]; then
echo "Successful ftp...$rc" `date "+%Y-%m-%d-%H.%M.%S"` >> $log
else
sftp  $LOGINID@$HOST<<EOF > $log
#cd $DIR
#get $FILE
bye
EOF
rc1=$?
if [[ $rc1 != 0 ]]; then
    echo "Error occured...$rc" `date "+%Y-%m-%d-%H.%M.%S"` >> $log
else
 echo "Successful sftp...$rc" `date "+%Y-%m-%d-%H.%M.%S"` >> $log
fi
fi

In above code my script is not working as it should actually...below is the output of log file

"Not connected.
Successful ftp...0 2014-01-30-10.03.06"

It clearly shows that ftp is not happening on this host so ideally it shuold try doing sftp but its not coming to sftp syntax rather its coming out of script...

Please suggest where i am going wrong..
TIASmilie
# 7  
Old 01-30-2014
sftp is in an 'else' clause, so when ftp 'succeeds' it doesn't bother.

ftp ought to be returning failure here, but must be buggy. Try capturing its output with 2>logfile and processing that file.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sftp equivalent to ftp -n

Hi all. I can put ftp command in shell script together with the password using ftp -n 10.1.2.34 << EOF user userid password cd /test_dir/ prompt bin get filename.txt EOF But the -n option is not available for sftp. What alternatives do I have then to bypass the password prompt? ... (6 Replies)
Discussion started by: aimy
6 Replies

2. UNIX for Dummies Questions & Answers

Replace FTP with SFTP

Hi All, I am in the process of replacing SFTP instead of FTP to make data more secure. In one of my FTP script I have Quote Site command. I would like to know, what is the option to replace this in SFTP ftp -n -v <<! | tee -a $LOG | grep "Transfer complete" >/dev/null open... (3 Replies)
Discussion started by: desai.vishnu
3 Replies

3. Shell Programming and Scripting

Migrate from FTP to SFTP

Hi,I am using following code for FTP in shell script file and it is working.Now I want to migrate from FTP to SFTP.What code changes/steps I have to perform for SFTP ? ftp -in <<FIN open $SAP_UP_SERVER user $SAP_UP_USER $SAP_UP_PASSWORD asc put... (7 Replies)
Discussion started by: Nitin Varshneya
7 Replies

4. Shell Programming and Scripting

script from ftp to sftp

salmo allikm warhmat allah wabrakato i have my own server and upload file with ftp with this script ftp -n xxxxxxxxxcom<<EOF user xxxx xxxx binary put image bye EOF i want to convert to sftp or secure protocol when change to sftp no respond it stop i don't know how to start ... (7 Replies)
Discussion started by: pua06
7 Replies

5. UNIX for Dummies Questions & Answers

FTP / SFTP confusion

Good morning all, I require some help regarding an FTP server i am building. Basically i have around 20 users all sending a receiving files to and from my FTP server but would like all traffic to be secure. I want to ensure users connect via SFTP only and are denied via FTP. Im using... (1 Reply)
Discussion started by: mokachoka
1 Replies

6. UNIX for Dummies Questions & Answers

FTP or SFTP User

Hello there, is there any command in Unix to check that following ftp user is ftp or sftp user. Thanks. (1 Reply)
Discussion started by: ahhmedbilal
1 Replies

7. Shell Programming and Scripting

amend ftp to sftp

Hi all, below is my current scriptftp -n << FTPCTRL open $my_ip user $my_user $my_pass ascii prompt off lcd $myDIR cd $ftp_cd $OPS $myfile FTPCTRLI'd like to amend it to sftp mode. Please advise the correct step.I consulted the man pages of sftp and I suppose I should be using the... (1 Reply)
Discussion started by: new2ss
1 Replies

8. UNIX for Advanced & Expert Users

FTP commands in SFTP

Hi, I am in the process of migrating all my FTP data flows into SFTP to make data more secure... I have used many quote site commands in our FTP sesssion. In SFTP i found that there is no option to do such commands. Does any body here know to overcome the current situation. Regards,... (2 Replies)
Discussion started by: Astra
2 Replies

9. Shell Programming and Scripting

FTP to SFTP conversion

Hi, I have the following ftp code to check the status of communication channel : /bin/ftp -i -v -n -B 64 $HOST <<END 2>&1 > $LOGFILE user $user $password bye END I need to re write exactly the same way with SFTP using authentication keys, I know how to do SFTP with authentication keys.... (4 Replies)
Discussion started by: shihabvk
4 Replies

10. Cybersecurity

FTP v's SFTP

Hi, I'm being told that I have to start using SFTP from my server (HPUX 11i), so heres a few questions; What are the differences between FTP and SFTP? What differences in congiuration can I expect? Are there any changes in command usage? I did see an earlier thread with command issues. A few... (3 Replies)
Discussion started by: nhatch
3 Replies
Login or Register to Ask a Question