我有一个php脚本,它触发一个远程bash脚本,该脚本又触发另一个远程bash脚本(所有机器都使用ssh密钥对相互通信,工作正常)。。。
PHP(服务器1)-->BASH(服务器2)-->BASH(服务器3)
第一个bash脚本中有一大堆函数,它们都能完美地工作,变量在整个过程中一直传递,最后有一个命令在服务器3上运行另一个脚本:
ssh root@xxx.xxx.xxx.xxx "/var/www/getpodcast.sh $1";
当脚本被触发时,这也起作用:
getpodcast.sh($1包含文件名,例如:mymusic.mp3)
#!/bin/bash
wget -o /var/www/vhosts/site1/httpdocs/audio/$1 http://xxx.xx.xx.xx.xxx/complete/$1
这应该是在这个阶段下载一个文件,但由于某些原因,它只下载了一个部分文件。完整的文件大小应该在115mb左右,但每次运行它时,它只会下载前10或20k?这个数字在每次运行时都会变化,它不是恒定的。
我试过在这个脚本中使用wget-b来强制它在后台下载,但如果我这样做,就不会下载。
在这种情况下,我使用wget的方式不对吗?由于它是由远程bash脚本触发的,我是否需要提供一些额外的安全性或命令来实现这一点?
非常感谢!
根据注释,您确定wget
命令的输出包含wget生成的文本,而不是您指定的URL中的文件内容。
根据wget手册页:
-o logfile
--output-file=logfile
Log all messages to logfile. The messages are normally reported to
standard error.
这不是你想要的,所以是的,这是一个wget使用错误。
相反,您可能想要使用curl
,它以您期望的方式使用-o
选项,或者切换到wget的-O
(大写O)选项。请注意,wget默认情况下会将其保存的文件命名为与URL中相同的名称;阅读手册页,了解-O
的行为与此有何不同。