/ / UNIX sftp issue - linux, shell, unix

problem z uniksowym sftpem - linux, shell, unix

Nie publikuję tu całego kodu, ale jego część. Kod podający błędy. Próbuję przechowywać wszystkie polecenia sftp, a następnie wykonać rzeczywisty 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

Otrzymuję błędy:

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

Pozdrowienia,

Chai

Odpowiedzi:

1 dla odpowiedzi № 1

Wskazówka znajduje się w komunikacie o błędzie

rm: /var/tmp/SFTP_BATCH_FILE is a directory

Ponieważ katalog nadal istnieje, kolejne polecenia nie mogą utworzyć SFTP_BATCH_FILE plik.

rm -f nie można usunąć katalogów. Posługiwać się rm -rf zamiast.

Edytować:

Aby wyjaśnić, -r jest rekursywne, co oznacza, że ​​katalogi również są usuwane, -f oznacza siłę, co oznacza, że ​​nieistniejące pliki / katalogi nie powodują błędu, a polecenie nie monituje.