Вероятно, это вопрос, который задавали раньше, но я не могу найти хороший вопрос / ответ. Мне нужно написать сценарий оболочки, который будет вызываться программой PHP (функция exec) для перемещения всех файлов * .pdf в удаленный каталог через SFTP. Целевой каталог будет постоянным. Удаленный каталог также будет постоянным. Файлы будут только в формате * .pdf.

Скрипт должен использовать SFTP, это требование. Это SCP не будет работать. SFTP-порт также настраивается, мне придется добавить это в приведенный ниже код. Я не уверен, как написать цикл через * .pdf файлы в каталоге, а затем удалить их в случае успеха. Возможно, немного другой подход будет лучше.

#! /bin/ksh
TARGET_DIR=<path of target directory>
FILE_NAME_TO_CHECK=<file_name>
REMOTE_USER=<user_name>
REMOTE_PORT=<remote port>
REMOTE_MACHINE=<remote server name>
REMOTE_DIR=<path of remote directory>

cd ${TARGET_DIR}
sftp ${REMOTE_USER}@${REMOTE_MACHINE} -

2 ответа2

3

Вы должны использовать аутентификацию с закрытым ключом, чтобы избежать проблем с паролями.

sftp -oPort=CUSTOMPORT -b BATCHFILE USER@DESTINATION

BATCHFILE (подготовьте его перед запуском команды)

lcd LOCAL_PATH
cd REMOTE_TARGET_DIR
put *.pdf
exit
0

Вы можете автоматизировать загрузку SFTP-файла с помощью WinSCP, если вы уже знаете последовательность команд, которую вы бы использовали для этого вручную. Я скопировал образец сценария из ответа ниже:

echo option batch abort > ftpcmd.dat
echo option confirm off >> ftpcmd.dat
echo open sftp://ftp_user:password@ftp.MyFTPSite.com -hostkey="server's hostkey" >> ftpcmd.dat
echo put directory_path\%.pdf >> ftpcmd.dat
winscp.com /script=ftpcmd.dat
del ftpcmd.dat

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .