我已经编写了一个shell脚本来将远程文件ftp到本地服务器。但它给了我错误。 脚本:
#!/bin/sh
cd /home/local-path
HOST='hostname'
USER='username'
PASSWD='password'
ftp -n -v $HOST << EOT
binary
user $USER $PASSWD
cd /home/server-path
theFile=$(ls -t | head -n 1)
get $theFile
bye
EOT
运行时我收到以下错误:
Connected to server.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
331 Please specify the password.
230 Login successful.
250 Directory successfully changed.
?Invalid command
(remote-file) (local-file)
221 Goodbye.
如果我硬编码完整的文件路径而不是 cd / home / server-path &amp; theFile = $(ls -t | head -n 1),它运行正常。问题是我不知道确切的远程文件名,因为有多个文件,我只需要ftp最新的。
请您回顾并告诉我我在这里犯了什么错误,谢谢。
答案 0 :(得分:-1)
我使用的FTP只支持一些命令。所以基本上你可以使用get
命令将文件从FTP放到你的目录中。最好将远程目录中的所有文件放到本地,然后使用本地目录中的ls -t | head -n1
来获取最新文件。
以下是代码:
!/bin/bash
path=/some/path
export path
echo "-----------Downloading the file from SFTP Location----------------"
cd "$path"
sftp -b /dev/stdin user@host <<CMDS
cd [remote-directory path]
pwd
get allfilenames local-directory
bye
CMDS
cd "$path"
ls -t | head -n1