我的主机允许有限访问 SSH 和 Linux 命令。但是,我不能使用Wget信不信由你。
我希望能从另一台服务器下载文件(.flv)。我可以尝试另一个命令吗?
如果没有,我可能会使用 Python、Perl 或 PHP(最喜欢的)来实现文件下载。可能吗?
我的主机允许有限访问 SSH 和 Linux 命令。但是,我不能使用Wget信不信由你。
我希望能从另一台服务器下载文件(.flv)。我可以尝试另一个命令吗?
如果没有,我可能会使用 Python、Perl 或 PHP(最喜欢的)来实现文件下载。可能吗?
您可以使用以下命令:
curl -O http://www.domain.com/file.flv
echo -ne "GET /path/to/file HTTP/1.0\r\nHost: www.somesite.com\r\n\r\n" | nc www.somesite.com 80 | perl -pe 'BEGIN { while (<>) { last if $_ eq "\r\n"; } }'
用Bash编译的--enable-net-redirections
功能非常强大。(Zsh也有类似的功能。)哎呀,我什至还会在这里抛出 HTTP Basic Auth。
当然,它不是一个很好的 HTTP/1.1 客户端;例如,它不支持分块编码。但这在实践中非常罕见。
read_http() {
local url host path login port
url="${1#http://}"
host="${url%%/*}"
path="${url#${host}}"
login="${host%${host#*@}}"
host="${host#${login}@}"
port="${host#${host%:*}}"
host="${host%:${port}}"
(
exec 3<>"/dev/tcp/${host}/${port:-80}" || exit $?
>&3 echo -n "GET ${path:-/} HTTP/1.1"$'\r\n'
>&3 echo -n "Host: ${host}"$'\r\n'
[[ -n ${login} ]] &&
>&3 echo -n "Authorization: Basic $(uuencode <<<"${login}")"$'\r\n'
>&3 echo -n $'\r\n'
while read line <&3; do
line="${line%$'\r'}"
echo "${line}" >&2
[[ -z ${line} ]] && break
done
dd <&3
)
}
curl -C - -O http://www.url.com
Python脚本:
#!/usr/bin/env python
import os,sys,urllib
f = open (os.path.basename (sys.argv[1]), 'w')
f.write (urllib.urlopen (sys.argv[1]).read ())
f.close ()
sys.argv[1]
您感兴趣的网址在哪里。
lynx -source
如果您尝试从您已通过身份验证访问的主机下载文件,请尝试使用scp
. 它就像一个普通的副本,但它是通过 ssh 隧道完成的。我发现允许“有限 ssh”的主机通常仍然允许scp
.
scp user@myhost.com:folder/file.flv ./
您将需要提供您的用户凭据。有关更多信息,请参阅scp
文档。
另一个可以做类似事情的工具是snarf。
各种方式,
使用 scp。
用法:scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]文件1 ... [[用户@]主机2:]文件2
另一种可能的选择是aria2。