下载除 Wget 之外的文件的命令 [关闭]
-
13-09-2019 - |
题
我的主机允许对 SSH 和 Linux 命令进行有限访问。但是,我不能使用 获取 信不信由你。
我希望能够从另一台服务器下载文件(.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"; } }'
击,提供--enable-net-redirections
编译是非常强大的。 (岩组具有类似的功能。)哎呀,我甚至会抛出HTTP基本认证在这里了。
当然,这不是一个很好的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
)
}
lynx -source
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]
是你感兴趣的URL。
如果你想从您通过身份验证访问的主机下载文件时,请尝试使用scp
。这就像一个正常的副本,但它是通过一个SSH隧道来完成。我发现主机谁允许“有限的ssh”还经常允许scp
。
scp user@myhost.com:folder/file.flv ./
您需要提供您的用户凭据。请参阅 scp
文档获得更多信息。
这确实类似的东西,是在那里的另一个工具是 SNARF 。
使用SCP。
用法:SCP [-1246BCpqrv] [-c密码] [-F ssh_config中] [-i identity_file]结果 [-l极限] [-o ssh_option] [-P端口] [-S程序],点击 [用户@]主机1:]文件1 ... [[用户@]主机2:] file2的
各种方式,
- Python - 如何不通过 HTTP 获取数据
- 珀尔—— 文件::获取 模块
- TCL—— ::http::geturl, ,最后有例子
- 如果你有编译器并且 FTP 可以工作, 获取 wget 并编译它
另一种可能的替代方案是 aria2 。
不隶属于 StackOverflow