无法使用 wget 命令

use*_*746 6 wget

我将 Ubuntu 13.10 与代理服务器一起使用,这需要用户 ID 和密码。

我无法运行wget命令。它返回:

Resolving sourceforge.net (sourceforge.net)... failed: Name or service not known.
wget: unable to resolve host address ‘sourceforge.net’
Run Code Online (Sandbox Code Playgroud)

可以做些什么来解决这个问题?

Bab*_*ton 1

使用编辑您的 Resolv conf

# sudo vim /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

然后输入以下内容

nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 4.4.4.4
Run Code Online (Sandbox Code Playgroud)

将 192.168.1.1 替换为您的路由器 IP

也编辑此文件,否则您的 DNS 将覆盖它

# sudo vim /etc/resolvconf/resolv.conf.d/base
Run Code Online (Sandbox Code Playgroud)

然后输入以下内容

nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 4.4.4.4
Run Code Online (Sandbox Code Playgroud)

然后使用重新启动服务器

# sudo /etc/init.d/networking restart
Run Code Online (Sandbox Code Playgroud)


Noo*_*rep 1

有两种wget在代理后面运行的方法。设置适当的环境变量并wget根据它们进行操作或配置wget配置文件 - wgetrc.

设置环境变量

在设置环境变量之前,我们首先看看是否存在预设的代理变量。我们可以使用以下命令获取该信息。

env | grep proxy

http_proxy=http://foo.bar:3128
no_proxy=localhost,127.0.0.1
Run Code Online (Sandbox Code Playgroud)

如果没有设置代理环境变量,它将采用直接连接。让我们以我的大学为例。我们使用 HTTP 代理服务器。wget不设置环境变量运行http_proxy就会失败。那么,让我们设置这个 env(环境变量)。变量优先

export http_proxy="http://foo.bar:8080"
Run Code Online (Sandbox Code Playgroud)

现在,运行吧wget,它应该会像魅力一样发挥作用。如果您的代理还需要身份验证,即用户名和密码,则使用以下格式设置环境:

export http_proxy="http://username:password@foo.bar:8080"
Run Code Online (Sandbox Code Playgroud)

同样,对于其他类型的代理,设置相应的 env -等ftp_proxyhttps_proxy

请注意,上述命令仅在用户会话过期之前有效,即通过运行上述命令我们只是设置代理环境。对于一个会话,而不是永久的。通常我们不想每次登录时都运行该命令。因此,为了使其永久化,我们可以在 wget 的配置wgetrc文件中设置值或在文件中设置环境~/.bashrc

echo "export http_proxy=http://foo.bar:8080/" | tee -a ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

应该注意的是,这样我们可能会影响用户的代理设置。更好的方法是在 wget 的配置文件中永久设置设置,这样就没有其他应用程序了。被影响。

配置wgetrc文件

像大多数应用程序一样,wget也有一个配置文件 - wgetrc

  • /etc/wgetrc, 或者
  • ~/.wgetrc

前者用于全局更改,后者用于本地设置(特定于用户)。我们稍后会详细介绍,让我们看看如何应用代理设置。与设置代理环境变量类似,只是排除导出命令。打开文件~/.wgetrc文件。如果不存在,则创建它。

vim ~/.wgetrc
Run Code Online (Sandbox Code Playgroud)

现在,在文件中添加相应的语句。阅读“设置环境变量”部分来找到这一点。

如何禁用/关闭代理设置

一旦您在文件中配置了代理设置wgetrc,每次运行时wget,它都会自动连接到代理服务器。有时,对于本地/基于 LAN 的下载,您可能不需要代理服务器。--no-proxy在这种情况下,我们可以使用命令中的参数关闭代理设置:

wget --no-proxy http://10.0.0.1/file.tgz
Run Code Online (Sandbox Code Playgroud)

如果代理需要身份验证 - 用户名和密码

我们已经知道使用用户名和密码设置环境变量的格式。Wget 为您提供了两种方法来获取代理服务器的用户名和密码。

  • 在命令中以参数的形式提及它。
  • 设置配置文件中的值,/etc/wgetrc或者~/.wgetrc

如果您使用的身份验证是静态的,那么最好在配置文件中设置它。如果这只是一次性的事情或者如果您想覆盖配置文件中的设置,那么您可以使用--proxy-user--proxy-password选项。

wget --proxy-user=username --proxy-password=password http://foo.bar/file.tgz
Run Code Online (Sandbox Code Playgroud)

对于永久性更改,始终建议更改配置文件。

再次,对于全局更改,修改/etc/wgetrc文件,否则转到~/.wgetrc文件。打开任何文件并在其中追加/添加以下行。

proxy_user=username
proxy_password=password
Run Code Online (Sandbox Code Playgroud)

来源