我搜索了这个问题的网站,但找不到solution.Problem是与sftp相关的。我正在运行一个脚本,它接收7个参数,做SSH和上传文件到sftp server.Parameters我提供的是-服务器,用户,端口,source_directory,target_directory,source_file和tager_file。如果一切正常,则上传文件时没有任何错误,返回代码为0。问题是,如果有任何参数出错,就像target_directory一样,即使脚本返回0,因为返回的value.Here是脚本的样子-
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。有什么想法,怎么解决这个问题?提前谢谢你。
发布于 2011-04-13 16:42:15
您需要在批处理模式下运行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}https://stackoverflow.com/questions/5646349
复制相似问题