23

wget/lynx/GET在 POSIX 或 *nix 操作系统中是否存在默认分发的 HTTP 客户端,可用于实现最大的可移植性?

我知道大多数系统已经wgetlynx已安装,但我似乎记得使用默认设置安装了一些 Ubuntu 服务器系统,而它们既没有也没有wget安装lynx在基本包中。

我正在为 Linux(可能还有 Mac)编写一个 shell 脚本来将一个软件安装到计算机上。为了避免分发几个大文件,我想从互联网上获取这些文件,而不是使用安装程序打包。目前,安装脚本将分发在从Makeself创建的单个文件中。

我想避免安装脚本超过 100 MB,如果包含文件,那么如果该人正在升级或重新安装软件,则可能不需要它们。也许最便携的做法是将文件包含在 pacakage 中。

现在我只想让脚本按顺序检查wget,lynxGET, 它将使用它可以下载的任何一个,但如果有一种方法可以下载可以使用的文件,我可以完全避免这种情况所有系统。

编辑:

有人对 lwp-request ( GET) 及其可用性了解很多吗?到目前为止,这似乎在我检查过的几个系统上很容易获得,而且我记得这总是在大约 10 多年前回到 RedHat。

4

5 回答 5

16

2019 年 11 月 4 日编辑:我正在重写我的答案,以反映确保转移在飞行中不被篡改的重要性。我将把我原来的答案留在规则之下。

我建议使用rsyncoverssh来传输您的文件。rsync的界面可能看起来让人不知所措,但大多数用户可能会选择rsync -avzP,如果您需要更大的灵活性,rsync 可以适应。使用ssh将为您的连接提供完整性、真实性和隐私性。

curl是 http 传输的事实标准;如果首选纯 http 或 https,curl或者基于的工具curl可能是一个不错的选择。


以我的经验,工具按以下顺序可用:

  • wget
  • curl
  • sftp
  • ftp
  • GET(我HEAD一直在使用,但经常忘记它只是套件中的一个工具)
  • tftp
  • nc(不像我希望的那样普遍)
  • socat(更不常见)

bash /dev/tcp工具在我使用过的大多数系统上都可用(一些使用dashpdksh替代),但使用echowith bash, nc, orsocat正在为 HTTP 访问进行长期的处理——你必须以某种方式处理标头,这降低了它的优雅性.

于 2012-02-28T23:53:54.740 回答
10

POSIX 7 实用程序的官方列表

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html

列表中不存在以下内容:

  • wget
  • 卷曲
  • ftp

LSB也是如此,它基本上只保证 POSIX 实用程序。

但我确实认为 POSIX C 足以实现大部分netcat功能,所以这确实是一个错失的机会。例如:如何在没有 libcurl 的情况下在 C 中发出 HTTP 获取请求?

可能是因为像 HTTP 这样的网络协议被认为过于具体/在 POSIX 仍在发展的时候并不存在,而 POSIX 基本上永远冻结了。值得注意的是,HTTPS 加密的实施可能并非易事。

于 2013-07-01T10:02:36.047 回答
3

Curl 可能比 wget 更常见。至少根据我的经验,仅仅是因为更多的其他工具依赖于它。但是 curl 和 wget 都是超级简单的安装,可以在任何系统上使用。

于 2012-02-28T23:32:37.760 回答
3

gnu awk (gawk) 甚至在非 Linux 系统上也内置了 TCP 处理http://www.gnu.org/software/gawk/manual/gawkinet/html_node/

于 2012-09-04T14:55:41.703 回答
1

我建议使用 ftp 或 wget,因为它们在 Linux 发行版中最常见。最佳实践可能是让您的脚本查看命令是否可用,如果没有则转到下一个命令。

于 2012-02-28T23:29:21.550 回答