【发布时间】:2011-03-09 15:10:25
【问题描述】:
我编写了一个 bash 脚本来更新我公司网站上的一个页面。到目前为止,这是我所得到的:
#!/bin/bash
ruby final_07.rb
HOST=ftp.website.com
USER=username
PASSWD=password
ftp -n -v $HOST <<EOF
user $USER $PASSWD
delete warehouse.html.old
rename warehouse.html warehouse.html.old
put warehouse.html warehouse.html
EOF
它可以很好地运行 Ruby 脚本。它连接到FTP就好了。它甚至可以很好地重命名旧文件。但是,当它“上传”时,我只得到一个名为 'warehouse.html' 的文件,它是 0 字节 - 它完全是空的。我查了一下,源文件没问题。当我使用 FileZilla 手动上传时,它也可以正常工作。那么,什么给了?
这是来自我的终端窗口的日志:
john@starfire:~/code/ruby/idealm_db_parser/final$ ./update_script_02.sh
Connected to www.website.com.
220 FTP Service
Remote system type is UNIX.
Using binary mode to transfer files.
331 Password required for user.
230 User user logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
250 DELE command successful
350 File or directory exists, ready for destination name.
250 Rename successful
local: warehouse.html remote: warehouse.html
200 PORT command successful
150 Opening BINARY mode data connection for warehouse.html
226 Transfer complete.
221
提前感谢您的帮助。我正在运行 Ubuntu 10.10,如果有帮助的话。
【问题讨论】:
-
.old 文件看起来是否正确?可以查看远程机器上的文件权限和目录权限吗?确保他们没问题。 (零文件是很奇怪;-)!
-
权限。你可能正在做某事。我仍然对 *nix 如何处理权限非常不熟悉,所以我不会感到惊讶。我会在一个小时左右工作 - 我会测试一下并告诉你。
-
和都是Ubuntu的收发机。不同的操作系统会有不同的 Ftp 客户端,有时选项和处理完全不同。
-
新奇事:当我运行脚本时,它会将我这边的warehouse.html 文件归零,而不是FTP 那边。我不知道为什么。无论如何,我删除了
delete和rename行,它现在可以工作了。不过谢谢!