无法使用 wget 命令

无法使用 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’

怎样才能解决这个问题?

答案1

使用以下方式编辑 Resolv conf

# sudo vim /etc/resolv.conf

然后输入以下内容

nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 4.4.4.4

将 192.168.1.1 替换为您的路由器 IP

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

# sudo vim /etc/resolvconf/resolv.conf.d/base

然后输入以下内容

nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 4.4.4.4

然后重新开始您的服务器使用

# sudo /etc/init.d/networking restart

答案2

有两种方式可以wget在代理后面运行。要么设置适当的环境变量并wget根据它们采取行动,要么配置wget配置文件 - wgetrc

设置环境变量

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

env | grep proxy

http_proxy=http://foo.bar:3128
no_proxy=localhost,127.0.0.1

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

export http_proxy="http://foo.bar:8080"

现在,运行它wget,它应该会正常工作。如果您的代理还需要身份验证(即用户名和密码),则请使用以下格式设置环境:

export http_proxy="http://username:[email protected]:8080"

类似地,对于其他类型的代理,设置相应的环境-ftp_proxyhttps_proxy

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

echo "export http_proxy=http://foo.bar:8080/" | tee -a ~/.bashrc

需要注意的是,这种方式可能会影响用户的代理设置。更好的方法是将设置永久地设置在 wget 的配置文件中,这样就不会影响其他应用程序。

配置wgetrc文件

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

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

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

vim ~/.wgetrc

现在,在文件中添加相应的语句。阅读“设置环境变量”部分以找到此内容。

如何禁用/关闭代理设置

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

wget --no-proxy http://10.0.0.1/file.tgz

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

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

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

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

wget --proxy-user=username --proxy-password=password http://foo.bar/file.tgz

对于永久性的改变,总是建议改变配置文件。

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

proxy_user=username
proxy_password=password

来源

答案3

对我来说,问题出在 avahi-deamon 上,它搞乱了某些主机名的 DNS 响应。我不得不卸载 avahi,然后一切正常:

sudo apt remove avahi-daemon

相关内容