开发者

sftp return code

开发者 https://www.devze.com 2023-02-25 18:21 出处:网络
I seacrhed the site for this problem but could notfind solution.Problem is related to sftp.I am running a script which accepets 7 para开发者_Go百科meters,does SSH and uploads the file on sftp server.P

I seacrhed the site for this problem but could not find solution.Problem is related to sftp.I am running a script which accepets 7 para开发者_Go百科meters,does SSH and uploads the file on sftp server.Parameters i supply are-server,user,port,source_directory,target_directory,source_file and tager_file. if everything goes fine, file is uploaded without any error and return code is 0. Problem is if any parameter is wrong, like target_directory, even then script returns 0 as return value.Here is how script looks-

   typeset targetUsername=$1

typeset targetHostname=$2

typeset sftpPort=$3

typeset sourceDir=$4

typeset targetDir=$5

typeset sourceFilename=$6

typeset targetFilename=$7

typeset cmdPut="put ${sourceDir}/${sourceFilename} ${targetTempDir}/${tmpFileNam
e}"

typeset cmdRen="rename ${targetTempDir}/${tmpFileName} ${targetDir}/${targetFile
name}"

sftp ${sftpOption} ${targetUsername}@${targetHostname} <<EOF

${cmdPut}

${cmdRen}

bye
EOF

sftpStatus=$?

sftpStatus is supposed to return the status.But i am getting status as 0 always. Any idea, how to resove this? Thanks alot in advance.


You need to run sftp in batch mode, by putting your commands in a file and passing that to sftp. You will then get an exit code of 1 if there is a failure and 0 for success.

Here is some sample code:

# create a temporary file containing sftp commands
BATCH_FILE="/tmp/$(basename $0).$$.tmp"
echo ${cmdPut} > ${BATCH_FILE}
echo ${cmdRen} >> ${BATCH_FILE}

# run sftp in batch mode
sftp -b ${BATCH_FILE} ${sftpOption} ${targetUsername}@${targetHostname} 
sftpStatus=$?

rm ${BATCH_FILE}
0

精彩评论

暂无评论...
验证码 换一张
取 消