使用している netcat の種類を確認するにはどうすればいいですか?

使用している netcat の種類を確認するにはどうすればいいですか?

には 2 つの種類がありますnetcat:netcat-openbsdそしてnetcat-伝統的

使用している netcat のフレーバーを知るにはどうすればいいですか? 試してみましたman ncが、フレーバーがわかりません。

答え1

まず、マシンに複数のフレーバーをインストールできます。したがって、答えは、インストールしたフレーバーの数と入力するコマンドによって異なります。

netcat-traditionalnetcat-openbsdUbuntuのパッケージマネージャーからインストールできます。apt私の場合はソースからビルドしてGNU netcatフレーバーをインストールします。この公式サイト

「openbsd」フレーバーの場合、<package-name> を使用してバイナリ名の場所を調べることができます(パッケージ マネージャーがない場合は、dpkg -LGoogle で同等のものを検索してください)。dpkg Lapt

$ 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-traditionalapt

sudo apt-get install netcat-openbsd
sudo apt-get install netcat-traditional

コマンドncと はどうでしょうかnetcat? は で検索可能な複数のフレーバーに結び付けられ、または と$PATH入力するとパスの1つが実行されます。ここでも、 を使用して確認できますが、優先順位は最初の行です (ncnetcattype -a大胆な下に):

$ タイプ -a nc 
nc は /usr/local/bin/nc です
ncは/bin/ncです
nc は /usr/local/bin/nc です
ncは/bin/ncです
$ タイプ -a ネットキャット
netcat は /usr/local/bin/netcat です
netcatは/bin/netcatです
netcat は /usr/local/bin/netcat です
netcatは/bin/netcatです

realpath解決されたパスを確認するには、以下を使用できます。

$ 実パス /usr/local/bin/netcat 
ローカル
$ リアルパス /bin/netcat
バイナリ
$ 実パス /usr/local/bin/nc
ローカル
$ リアルパス /bin/nc
バイナリ

そのうち 4 つのパスのうち、私のシステムで一意なのは 2 つのパスだけです。1 つは「GNU」で、もう 1 つは「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)

つまり、ncORと入力すると、 「GNU Netcat」がnetcat実行されます。/usr/local/bin/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もフレーバーは変更されません。ncnetcat/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ネットキャット、 そしてクリプトキャット

¹実際に更新されたシンボリック リンクは/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潜在的に普遍的なテストであると思われます。

関連情報