有两种口味netcat
:netcat-openbsd和Netcat-传统。
如何知道我使用的是哪种风格的 netcat?我试过了man nc
,但没有说是什么味道。
答案1
首先,你可以在你的机器上安装多种口味。因此,答案取决于您安装了多少个版本以及您输入的命令。
netcat-traditional
并且netcat-openbsd
可以通过apt
Ubuntu 中的包管理器进行安装。就我而言,我还通过源代码构建来安装GNU netcat
风味这个官方网站。
对于“openbsd”风格,您可以使用 <package-name> 找出位置二进制名称dpkg -L
(自行搜索以查找相当于dpkg L
if yor package manager is not 的内容apt
):
$ dpkg -L netcat-openbsd | dpkg -L grep /bin /垃圾桶 /垃圾桶/nc.openbsd
然后用于type -a
确认二进制名称nc.openbsd
可在命令中搜索$PATH
并解释为命令:
$ type -a nc.openbsd
nc.openbsd is /bin/nc.openbsd
nc.openbsd is /bin/nc.openbsd
对于“传统”风味是相同的:
$ dpkg -L netcat-traditional | grep /bin
/bin
/bin/nc.traditional
$ type -a nc.traditional
nc.traditional is /bin/nc.traditional
nc.traditional is /bin/nc.traditional
这意味着我可以发出命令nc.openbsd
来运行netcat-openbsd
工具,也可以发出命令nc.traditional
来运行netcat-traditional
工具。 (可能会混淆命令包含 '.' 但包名称包含 '-' 的地方)
似乎有 3 种风格可以通过安装apt
:
$ apt-cache search netcat --names-only
netcat-openbsd - TCP/IP swiss army knife
netcat - TCP/IP swiss army knife -- transitional package
netcat-traditional - TCP/IP swiss army knife
但实际上netcat
只是虚拟包:
$ apt-cache show netcat | grep Description-en -A 2
Description-en: TCP/IP swiss army knife -- transitional package
This is a "dummy" package that depends on lenny's default version of
netcat, to ease upgrades. It may be safely removed.
因此,如果需要,您只能安装netcat-openbsd
并netcat-traditional
通过:apt
sudo apt-get install netcat-openbsd
sudo apt-get install netcat-traditional
nc
命令和怎么样netcat
?它们可以绑定到可通过 搜索的多种风格,如果您键入或 ,则$PATH
其中一个路径将运行。同样,您可以使用来检查,而优先级是第一行(如nc
netcat
type -a
大胆的以下):
$ 类型 -a nc nc 是 /usr/local/bin/nc nc 是 /bin/nc nc 是 /usr/local/bin/nc nc 是 /bin/nc $ 类型 -a netcat netcat 是 /usr/local/bin/netcat netcat 是 /bin/netcat netcat 是 /usr/local/bin/netcat netcat 是 /bin/netcat
您可以使用realpath
来找出它们的解析路径:
$ 真实路径 /usr/local/bin/netcat /usr/local/bin/netcat $ 真实路径 /bin/netcat /bin/nc.openbsd $ 真实路径 /usr/local/bin/nc /usr/local/bin/netcat $ 真实路径 /bin/nc /bin/nc.openbsd
其中4个路径中只有2个在我的系统中是唯一的,一个是“GNU”,另一个是“openbsd”:
$ /usr/local/bin/netcat --version | head -1
netcat (The GNU Netcat) 0.7.1
$ /bin/nc.openbsd -h |& head -1
OpenBSD netcat (Debian patchlevel 1.130-3)
这意味着如果我输入nc
OR netcat
,它将执行/usr/local/bin/netcat
“GNU Netcat”。
您可以尝试update-alternatives
调整解析的符号链接路径:
$ realpath /bin/nc
/bin/nc.openbsd
$ realpath /bin/netcat
/bin/nc.openbsd
$ sudo update-alternatives --config nc
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: 2
update-alternatives: using /bin/nc.traditional to provide /bin/nc (nc) in manual mode
$ realpath /bin/nc
/bin/nc.traditional
$ realpath /bin/netcat
/bin/nc.traditional
它将两个符号链接/bin/nc
和/bin/netcat
解析符号链接都更改为,但如果我输入OR ,/bin/nc.traditional
它仍然不会改变风格,因为在我的 中仍然具有更高的优先级:nc
netcat
/usr/local/bin/
/bin
$PATH
$ /bin/nc -h |& head -1
[v1.10-41]
$ nc -h |& head -1
GNU netcat 0.7.1, a rewrite of the famous networking tool.
$ type -a nc | head -1
nc is /usr/local/bin/nc
请注意,netcat 还有更多风格,例如国家猫,索卡特,sbd,网猫6,网络猫, 和密码猫。
1更新的实际符号链接是/etc/alternatives/nc
和/etc/alternatives/netcat
,其中/bin/nc
和/bin/netcat
已经分别是到/etc/alternatives/nc
和 的符号链接/etc/alternatives/netcat
。
答案2
当我跑步时nc --version
,我得到:
netcat (The GNU Netcat) 0.7.1
Copyright (C) 2002 - 2003 Giovanni Giacobbi
This program comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of this program under the terms of
the GNU General Public License.
For more information about these matters, see the file named COPYING.
Original idea and design by Avian Research <[email protected]>,
Written by Giovanni Giacobbi <[email protected]>.
也许BSD版本也会具体说。
答案3
在 Mac 上(尽管它显示为 GNU 版本):
$ nc -h
GNU netcat 0.7.1, a rewrite of the famous networking tool.
[ further output snipped ]
在 Linux 机器上(特别是 Ubuntu):
$ nc -h
[v1.10-41]
[ further output snipped ]
netcat --version
,在另一个答案中建议,向 抛出“无效选项”错误--version
,因此-h
似乎可能是一个通用测试。