首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sftp返回代码

sftp返回代码
EN

Stack Overflow用户
提问于 2011-04-13 16:22:22
回答 1查看 17.5K关注 0票数 4

我搜索了这个问题的网站,但找不到solution.Problem是与sftp相关的。我正在运行一个脚本,它接收7个参数,做SSH和上传文件到sftp server.Parameters我提供的是-服务器,用户,端口,source_directory,target_directory,source_file和tager_file。如果一切正常,则上传文件时没有任何错误,返回代码为0。问题是,如果有任何参数出错,就像target_directory一样,即使脚本返回0,因为返回的value.Here是脚本的样子-

代码语言:javascript
复制
   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的status.But。有什么想法,怎么解决这个问题?提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2011-04-13 16:42:15

您需要在批处理模式下运行sftp,方法是将命令放在一个文件中,并将该文件传递给sftp。如果失败,您将得到1的退出代码,如果成功,您将得到0的退出代码。

下面是一些示例代码:

代码语言:javascript
复制
# 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}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5646349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档