AS..
AS..

Reputation: 1

FTP status check using a variable - Linux

I am doing an ftp and I want to check the status. I don't want to use '$?' as mostly it returns 0 (Success) for ftp even though internally ftp didn't go through.

I know I can check the log file and do a grep from there for "Transfer complete" (221 status). That works fine but I don't want to do it as I have many different reports doing ftp. So creating multiple log files for all of them is what I want to avoid.

Can I get the logged information in a local script variable and process it inside the script itself? Something similar to these (I've tried both but neither worked):

Below is something similar to what I am trying to do:

ftp -inv ${HOST} > log_file.log  <<! 
user ${USER} ${PASS}
bin
cd "${TARGET}"
put ${FEEDFILE}
bye
!

Any suggestions on how can I get the entire ftp output in a script variable and then check it within the script?

Upvotes: 0

Views: 988

Answers (1)

PKo
PKo

Reputation: 978

To capture stdout to a variable you can use bash's command substitution, so either OUTPUT=`cmd` or OUTPUT=$(cmd).

Here's an example how to capture the output from ftp in your case:

CMDS="user ${USER} ${PASS}
bin
cd \"${TARGET}\"
put \"${FEEDFILE}\"
bye"

OUTPUT=$(echo "${CMDS}" | ftp -inv ${HOST})

Upvotes: 1

Related Questions