linux - unix sftp问题

标签 linux shell unix

我不是在这里发布整个代码,而是其中的一部分。下面的代码给出了错误。我正在尝试存储所有 sftp 命令,然后执行实际的 sftp。

export SFTP_BATCH_FILE='/var/tmp/SFTP_BATCH_FILE'

#------------------------------------------------------------------------
# Create sftp script
#------------------------------------------------------------------------
rm -f $SFTP_BATCH_FILE
echo "lcd $SOURCE_FILE_DIRECTORY " > $SFTP_BATCH_FILE
echo "cd $DESTINATION_FILE_DIRECTORY " >> $SFTP_BATCH_FILE
if [ -z $FILE_TO_UPLOAD_TESTD ] then
echo "put $FILE_TO_UPLOAD_TESTD " >> $SFTP_BATCH_FILE
fi
if [ -z $FILE_TO_UPLOAD_TESTDF ] then
echo "put $FILE_TO_UPLOAD_TESTDF " >> $SFTP_BATCH_FILE
fi
echo "bye" >> $SFTP_BATCH_FILE

#------------------------------------------------------------------------
# Do sftp
#------------------------------------------------------------------------
echo " Before SFTP " >> $LOG_FILE
if [[ -z $ FILE_TO_UPLOAD && -z $ FILE_TO_UPLOAD1 ]] then
 echo “No files to transfer” >> $LOG_FILE
       mv $LOG_FILE $LOG_DIRECTORY
 exit 1
else 
echo “Attempting to connect to  Remote Server $REMOTE_SERVER_PROD” >> $LOG_FILE
/usr/bin/sftp –v -oPort=$SFTP_PORT -b $SFTP_BATCH_FILE $SOURCE_FUNCTIONAL_ID@$REMOTE_SERVER_PROD >> $LOG_FILE 2 >> $LOG_FILE
fi

我遇到的错误:

rm: /var/tmp/SFTP_BATCH_FILE is a directory

test.ksh[89]: /var/tmp/SFTP_BATCH_FILE: cannot create

test.ksh[90]: /var/tmp/SFTP_BATCH_FILE: cannot create

问候,

最佳答案

线索在错误信息中

rm: /var/tmp/SFTP_BATCH_FILE is a directory

由于该目录仍然存在,您的后续命令无法创建 SFTP_BATCH_FILE 文件。

rm -f 无法删除目录。请改用 rm -rf

编辑:

澄清一下,-r 是递归的,意味着目录也被删除,-f 是强制的,这意味着不存在的文件/目录不会导致错误,命令也不会提示。

关于linux - unix sftp问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13098622/

相关文章:

perl - 超时 perl 中的用户输入

linux - 将输出发送到另一个命令

linux - 为持久进程临时停止守护进程而不杀死它

linux - 如何在 bash 中使用 grep 测试进程是否正在运行?

bash - 写入带有网络掩码的 IP (sed)

bash - 如何复制目录结构但只包含某些文件

linux - Debian 服务器崩溃后 uWSGI 突然无法再次启动

python - 重定向 Python 解释器的 IO

c++ - 用于调试和发布以及 src 目录的构建系统

linux - 如何在 grep 中排除某些单词?