有兩種口味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 netcat-openbsd | 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
似乎可能是通用測試。