には 2 つの種類がありますnetcat
:netcat-openbsdそしてnetcat-伝統的。
使用している netcat のフレーバーを知るにはどうすればいいですか? 試してみましたman nc
が、フレーバーがわかりません。
答え1
まず、マシンに複数のフレーバーをインストールできます。したがって、答えは、インストールしたフレーバーの数と入力するコマンドによって異なります。
netcat-traditional
netcat-openbsd
Ubuntuのパッケージマネージャーからインストールできます。apt
私の場合はソースからビルドしてGNU netcat
フレーバーをインストールします。この公式サイト。
「openbsd」フレーバーの場合、<package-name> を使用してバイナリ名の場所を調べることができます(パッケージ マネージャーがない場合は、dpkg -L
Google で同等のものを検索してください)。dpkg L
apt
$ 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
入力するとパスの1つが実行されます。ここでも、 を使用して確認できますが、優先順位は最初の行です (nc
netcat
type -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)
つまり、nc
ORと入力すると、 「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
もフレーバーは変更されません。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、ネットキャット、 そしてクリプトキャット。
¹実際に更新されたシンボリック リンクは/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
潜在的に普遍的なテストであると思われます。