如何在 ubuntu 中选择默认版本的 Netcat

Har*_*arg 7 debian netcat 15.10

当我检查时,netcat -h我发现netcat 中缺少-eVersion选项。我使用 Ubuntu 15.10。从论坛搜索后,我找到了一种了解已安装版本及其候选版本的方法。

apt-cache policy netcat
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

Installed: (none)
Candidate: 1.10-41
Version table:
1.10-41 0
500 http://archive.ubuntu.com/ubuntu/ wily/universe amd64 Packages
Run Code Online (Sandbox Code Playgroud)

所以我安装了 netcat 并获得了候选版本。现在我对如何选择默认的 netcat 版本感到困惑,并且-e选项无处可见。

这应该是什么解决方案?

谢谢。

Asw*_*ran 7

默认情况下netcat-openbsd安装了 Ubuntu包。-e 选项在netcat-openbsd. 为此,您需要安装netcat-traditional软件包。

$sudo apt-get install netcat-traditional
Run Code Online (Sandbox Code Playgroud)

安装后,您必须从 netcat-openbsd 切换到 netcat-traditional。对于那种类型

$sudo update-alternatives --config nc
Run Code Online (Sandbox Code Playgroud)

你会得到一些这样的选择

There are 2 choices for the alternative nc (providing /bin/nc).

  Selection    Path                 Priority   Status
------------------------------------------------------------
  0            /bin/nc.openbsd       50        auto mode
* 1            /bin/nc.openbsd       50        manual mode
  2            /bin/nc.traditional   10        manual mode

Press enter to keep the current choice[*], or type selection number: 
Run Code Online (Sandbox Code Playgroud)

然后在提示中输入 netcat-traditional 的选择编号,(此处为 2 )。

是的,我们做到了。

要检查它是否有效,请键入

$nc -h
Run Code Online (Sandbox Code Playgroud)

您将-e在列表中看到选项


Edi*_*diD 5

没有安装版本,因为netcat是一个过渡包。这意味着它不包含任何文件。安装(默认)并提供的软件包netcatnetcat-openbsd. 您可以检查它的版本:

apt-cache policy netcat-openbsd  
Run Code Online (Sandbox Code Playgroud)

来自 netcat 手册:

“在这个 netcat 中没有 -c 或-e选项,但是你仍然可以在通过重定向文件描述符建立连接后执行命令。在这里要小心,因为打开一个端口并让任何连接的人在你的站点上执行任意命令是危险的( ……)”


还有netcat-traditional-e选项。您可以删除netcat-openbsd和安装传统版本:

sudo apt-get install netcat-traditional 
Run Code Online (Sandbox Code Playgroud)

或保留两个版本并通过运行选择传统:

sudo update-alternatives --config nc 
Run Code Online (Sandbox Code Playgroud)