Shell 脚本将文件 SFTP 传输到远程服务器

Shell 脚本将文件 SFTP 传输到远程服务器

这可能是以前问过的问题,但我找不到好的问题/答案。我需要编写一个 shell 脚本,该脚本将由 PHP 程序(exec 函数)调用,以通过 SFTP 将所有 *.pdf 文件移动到远程目录。目标目录将保持不变。远程目录也将保持不变。文件将仅为 *.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} -

答案1

您应该使用私钥验证来避免密码问题。

sftp -oPort=CUSTOMPORT -b BATCHFILE USER@DESTINATION

批处理文件(启动命令前准备好)

lcd LOCAL_PATH
cd REMOTE_TARGET_DIR
put *.pdf
exit

答案2

你可以使用 WinSCP 自动上传 SFTP 文件,如果您已经知道手动执行此操作所需的命令序列。我从以下答案中复制了示例脚本:

echo option batch abort > ftpcmd.dat
echo option confirm off >> ftpcmd.dat
echo open sftp://ftp_user:[email protected] -hostkey="server's hostkey" >> ftpcmd.dat
echo put directory_path\%.pdf >> ftpcmd.dat
winscp.com /script=ftpcmd.dat
del ftpcmd.dat

相关内容