Linux 下载Wget以外的文件的命令
我的主机允许有限地访问SSH和Linux命令。然而,我不能用信不信由你 我希望从另一台服务器下载文件(.flv)。还有别的命令我可以试试吗Linux 下载Wget以外的文件的命令,linux,command-line,ssh,wget,Linux,Command Line,Ssh,Wget,我的主机允许有限地访问SSH和Linux命令。然而,我不能用信不信由你 我希望从另一台服务器下载文件(.flv)。还有别的命令我可以试试吗 如果没有,我可能会使用Python、Perl或PHP(收藏夹)来实现文件下载。有可能吗?lynx-source如果您试图从您已通过身份验证访问的主机下载文件,请尝试使用scp。它类似于普通拷贝,但它是通过ssh隧道完成的。我发现允许“有限ssh”的主机通常仍然允许scp scp user@myhost.com:folder/file.flv ./ 您需要提
如果没有,我可能会使用Python、Perl或PHP(收藏夹)来实现文件下载。有可能吗?
lynx-source
如果您试图从您已通过身份验证访问的主机下载文件,请尝试使用scp
。它类似于普通拷贝,但它是通过ssh隧道完成的。我发现允许“有限ssh”的主机通常仍然允许scp
scp user@myhost.com:folder/file.flv ./
您需要提供您的用户凭据。请参阅以获取更多信息。另一个做类似事情的工具是。
echo-ne“GET/path/to/file HTTP/1.0\r\n host:www.somesite.com\r\n\r\n“| nc www.somesite.com 80 | perl-pe”BEGIN{while(){last if$\r\n”}
curl -C - -O http://www.url.com
各种方式
- Perl——模块
- TCL--,最后有一个例子
- 如果你有编译器和FTP的作品,并编译它
#!/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。另一种可能的选择是。使用编译--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
)
}
read_http(){
本地url主机路径登录端口
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“获取${path:-/}HTTP/1.1”$”\r\n
>&3 echo-n“主机:${Host}”$'\r\n
[-n${login}]]&&
>&3 echo-n“Authorization:Basic$(uuencode您可以使用以下命令:
curl-O
使用scp
用法:scp[-1246BCpqrv][-c密码]-F ssh\u config][-i-identity\u文件]
[-l限制][o ssh\U选项][P端口][S程序]
[[user@]host1:]file1…[[user@]host2:]file2
你能解释一下为什么不能使用wget吗?我以前见过;一些系统管理员实际上会阻止它,因为他们认为不访问它“更安全”"。可能还有其他原因,但这是我经常看到的。Abs清楚地表明它来自另一台服务器。@Randolpho-嗯,scp允许您从另一台服务器复制。这是scp的唯一功能。@sheepsimulator:只有当您可以访问远程服务器时,您才能使用scp,也就是说,它是您拥有帐户的主机。我相信Abs没有这样。也就是说,在对问题进行二读时,可以解释为Abs可以访问远程主机。基于此,我取消了我的否决票。@Randolpho,我发现这个问题对于他是否具有经过身份验证的访问权限相当模糊。我只给了我的两分钱。无论如何,谢谢你取消否决票:)这显然是史诗般的,但它似乎运行并没有提供任何反馈。我从来没有说过这是一个非常/好/的选项。但是如果你有netcat和perl…(不过,如果你有perl,使用LWP::Simple可能会更好。不过可以很容易地改为使用sed或awk或其他东西)从理论上讲,不使用netcat和perl也可以做到这一点——bash有tcp重定向,sed可以删除头文件看这里:GNU awk也有TCP重定向:)@cube:我在下面写我的答案时没有看到你的评论,但这和我做的差不多。@cube,许多发行版(包括debian)禁用bash tcp重定向-毕竟,这窃取了部分文件系统名称空间为什么OP接受这个答案?许多其他人很久以前就提到了curl,最重要的是,这里给出的确切命令是不正确的。奇怪的。您好,您应该读:man curl.-o表示将输出文件写入磁盘,而不是将其发送给stdout.:)必须加密我们的新手!
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
)
}