微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sftp返回码

如何解决sftp返回码

| 我在网站上找到了此问题,但找不到解决方案。问题与sftp有关。我正在运行一个脚本,该脚本接受7个参数,执行SSH并将文件上传到sftp服务器上。我提供的参数是-server,user,port,源目录,目标目录,源文件标记文件。 如果一切正常,文件上传没有任何错误,返回码为0。 问题是是否有任何参数错误,例如target_directory,即使脚本返回0作为返回值。以下是脚本的外观-
   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应该返回状态。但是我总是将状态设为0。 任何想法,如何解决? 在此先感谢。     

解决方法

您需要以批处理方式运行
sftp
,方法是将命令放在文件中并将其传递给
sftp
。如果失败,您将获得退出代码1,成功则获得0。 这是一些示例代码:
# 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}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。