Você deve usar a autenticação de chave privada para evitar problemas com senhas.
sftp -oPort=CUSTOMPORT -b BATCHFILE USER@DESTINATION
BATCHFILE (prepare-o antes de iniciar o comando)
lcd LOCAL_PATH
cd REMOTE_TARGET_DIR
put *.pdf
exit
Esta é provavelmente uma pergunta feita antes, mas não consigo encontrar uma boa pergunta / resposta. Eu preciso escrever um script de shell que será chamado pelo programa PHP (exec function) para mover todos os arquivos * .pdf para um diretório remoto via SFTP. O diretório de destino será constante. O diretório remoto também será constante. Os arquivos serão apenas do formato * .pdf.
O script deve usar SFTP, isso é um requisito. O SCP não funcionará. A porta SFTP também é personalizada, vou ter que trabalhar isso no código abaixo. Não sei como escrever o loop pelos arquivos * .pdf no diretório e removê-los com sucesso. Talvez uma abordagem ligeiramente diferente seja melhor.
#! /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} -
Você deve usar a autenticação de chave privada para evitar problemas com senhas.
sftp -oPort=CUSTOMPORT -b BATCHFILE USER@DESTINATION
BATCHFILE (prepare-o antes de iniciar o comando)
lcd LOCAL_PATH
cd REMOTE_TARGET_DIR
put *.pdf
exit
Você pode automatizar o upload de arquivos SFTP usando WinSCP , se você já conhece a sequência de comandos que você usaria para fazer isso manualmente. Copiei o script de amostra da resposta abaixo:
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