Bash shell脚本中的FTP不工作

Bash shell脚本中的FTP不工作,bash,shell,ftp,freebsd,Bash,Shell,Ftp,Freebsd,我的主机升级了我的FreeBSD版本,现在我的一个脚本坏了。该脚本只需将数据源上传到谷歌的商户服务 脚本(在升级之前工作): ftpftp://myusername:mypassword@uploads.google.com/ftp$HOSTNAME一些想法: 这只是一个想法,因为它是在子shell中执行的,子shell应该正确地从父脚本继承,env在脚本中执行时与在shell中执行时有什么区别吗 你用的是正确的“shebang”吗 任何需要身份验证的代理 你能ping主机吗?显示有一个简单的-

我的主机升级了我的FreeBSD版本,现在我的一个脚本坏了。该脚本只需将数据源上传到谷歌的商户服务

脚本(在升级之前工作):

ftpftp://myusername:mypassword@uploads.google.com/
ftp$HOSTNAME一些想法:

这只是一个想法,因为它是在子shell中执行的,子shell应该正确地从父脚本继承,
env
在脚本中执行时与在shell中执行时有什么区别吗

你用的是正确的“shebang”吗

任何需要身份验证的代理

你能ping主机吗?

显示有一个简单的
-u
命令行开关来上传文件;由于默认值为
ascii
(抖动),您可以用一个命令行替换整个脚本:

ftp -u ftp://username:password@uploads.google.com/mymerchantfile.txt\
/usr/www/users/myname/feeds/mymerchantfile.txt

(用
\\n
包装的长行,请随意删除反斜杠并将其全部放在一行上。)

在BSD中,您可以创建ftp可用于登录的脚本。您甚至可以使用
-N
参数在
ftp
命令中指定
NETRC
文件。否则,将使用默认的
NETRC
(即
$HOME/.NETRC
)。

能否检查shell登录和cron作业之间的环境是否存在差异?从登录名运行
env
,并查看
ftp\u proxy
http\u proxy

接下来,在cron作业中包含一行将转储环境,例如
env>/tmp/your.env


可能有一些不同…另外,您是否仔细检查了
-n
开关的正确使用情况?

您的主机能否解决
上载问题。google.com
?尝试
ping uploads.google.com
host uploads.google.com
telnet uploads.google.com ftp
尝试连接到他们的服务器。是的,如果我手动操作,我可以登录到服务器:ftp uploads.google.com,并在命令提示符下输入用户名和密码。非常好的帖子,谢谢格式化。很容易理解你的问题。也就是说,我无法访问FreeBSD系统。在这里查看我的ftp回复,你可能会发现一些想法。祝你好运这是行不通的。它正在尝试使用本地服务器上的用户名登录FTP服务器。它似乎试图在传递用户和变量之前进行登录。在这种情况下,更改为$USERNAME。(我在这里假设您将在ftp命令之前输入这些值或以其他方式定义它们。)我可以手动登录该站点,因此不会出现ping问题。我在测试时以自己的用户身份执行脚本,所以我也不认为这是问题所在。@user77413不过,请在脚本中尝试!您可能会感到惊讶……服务器在第一行出现故障,即主机未知。它不喜欢包含用户名和密码的初始ftp命令的语法。@user77413,hrm。
哪个ftp
报告什么?可能
ftp
路径中的第一个可执行文件
与提供的FreeBSD不匹配
ftp(1)
?您是否忘记了示例中的-u?@Pianosaurus,是的,是的,我忘记了。谢谢(喜欢这个名字。)
HOST='uploads.google.com'
USER='myusername'
PASSWD='mypassword'
ftp -dni <<END_SCRIPT
open $HOST
quote USER $USER
quote PASS $PASS
ascii
put /usr/www/users/myname/feeds/mymerchantfile.txt mymerchantfile.txt
END_SCRIPT
HOST='uploads.google.com'
USER='myusername'
PASSWD='mypassword'
ftp -dni <<END_SCRIPT
open $HOST
user $USER $PASS
ascii
put /usr/www/users/myname/feeds/mymerchantfile.txt mymerchantfile.txt
END_SCRIPT
ftp $HOSTNAME <<EOFEOF
$USER
$PASS
ascii
put $LOCALFILE $REMOTETEMPFILE
rename $REMOTETEMPFILE $REMOTEFINALFILE
EOFEOF
ftp -u ftp://username:password@uploads.google.com/mymerchantfile.txt\
/usr/www/users/myname/feeds/mymerchantfile.txt