Es gibt zwei Geschmacksrichtungen netcat
:netcat-openbsdUndNetcat-traditionell.
Wie finde ich heraus, welche Netcat-Variante ich verwende? Ich habe es versucht, man nc
aber es steht nicht, welche Variante es ist.
Antwort1
Zunächst einmal können Sie mehrere Varianten auf Ihrem Computer installieren. Die Antwort hängt also davon ab, wie viele Varianten Sie installiert haben und welchen Befehl Sie eingeben.
netcat-traditional
und netcat-openbsd
kann über den Paketmanager apt
in Ubuntu installiert werden. In meinem Fall baue ich auch aus der Quelle, um GNU netcat
die Variante über zu installierendiese offizielle Website.
Für die Variante „OpenBSD“ können Sie den Speicherort des Binärnamens mit dpkg -L
<Paketname> ermitteln (googeln Sie selbst, um das Äquivalent zu finden, dpkg L
wenn Ihr Paketmanager dies nicht tut apt
):
$ dpkg -L netcat-openbsd | grep /bin /Behälter /Behälter/nc.openbsd
Bestätigen Sie anschließend type -a
, dass der Binärname nc.openbsd
durchsuchbar ist $PATH
und als Befehl interpretiert wird:
$ type -a nc.openbsd
nc.openbsd is /bin/nc.openbsd
nc.openbsd is /bin/nc.openbsd
Für den „traditionellen“ Geschmack gilt das Gleiche:
$ 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
Das heißt, ich kann einen Befehl nc.openbsd
zum Ausführen netcat-openbsd
des Tools und auch einen Befehl nc.traditional
zum Ausführen netcat-traditional
des Tools eingeben. (Es kann zu Verwirrung kommen, wenn der Befehl „.“ enthält, der Paketname jedoch „-“ enthält.)
Es scheint, als gäbe es drei Varianten zur Installation 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
Aber eigentlich netcat
ist es nur ein Dummy-Paket:
$ 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.
Sie können also nur netcat-openbsd
und netcat-traditional
über installieren apt
, wenn Sie möchten:
sudo apt-get install netcat-openbsd
sudo apt-get install netcat-traditional
Wie wäre es mit Befehlen nc
und netcat
? Sie können an mehrere durchsuchbare Varianten gebunden werden $PATH
. Einer der Pfade wird ausgeführt, wenn Sie nc
oder eingeben netcat
. Auch hier können Sie type -a
zur Überprüfung verwenden, wobei die Priorität die erste Zeile ist (alsdeutlichunten):
$ Typ -a nc nc ist /usr/local/bin/nc nc ist /bin/nc nc ist /usr/local/bin/nc nc ist /bin/nc $ Typ -a Netcat netcat ist /usr/local/bin/netcat netcat ist /bin/netcat netcat ist /usr/local/bin/netcat netcat ist /bin/netcat
Sie können realpath
Folgendes verwenden, um den aufgelösten Pfad herauszufinden:
$ realpath /usr/local/bin/netcat /usr/local/bin/netcat $ realpath /bin/netcat /bin/nc.openbsd $ realpath /usr/local/bin/nc /usr/local/bin/netcat $ realpath /bin/nc /bin/nc.openbsd
4 davon, nur 2 Pfade sind in meinem System eindeutig, einer ist „GNU“ und der andere ist „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)
Das heißt, wenn ich nc
„OR“ eingebe netcat
, wird das Ergebnis /usr/local/bin/netcat
„GNU Netcat“ angezeigt.
Sie können versuchen, update-alternatives
den aufgelösten Symlink-Pfad anzupassen:
$ 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
Es hat beides geändert /bin/nc
und /bin/netcat
den symbolischen Link¹ in aufgelöst /bin/nc.traditional
, aber es hat immer noch keine Änderung an der Darstellung bewirkt, wenn ich nc
„OR“ eingebe netcat
, da es in meinem /usr/local/bin/
immer noch Vorrang hat :/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
Beachten Sie, dass es weitere Varianten von Netcat gibt, z. B.ncat,socat,sbd,netcat6,Abonnieren, Undkryptokatze.
¹ Die tatsächlich aktualisierten symbolischen Links waren /etc/alternatives/nc
und /etc/alternatives/netcat
, wobei /bin/nc
und bereits jeweils mit und /bin/netcat
verknüpft waren ./etc/alternatives/nc
/etc/alternatives/netcat
Antwort2
Beim Ausführen nc --version
wird Folgendes angezeigt:
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]>.
Möglicherweise wird dies auch in der BSD-Version ausdrücklich erwähnt.
Antwort3
Auf einem Mac (obwohl es sich als GNU-Version ausgibt):
$ nc -h
GNU netcat 0.7.1, a rewrite of the famous networking tool.
[ further output snipped ]
Auf einer Linux-Box (speziell Ubuntu):
$ nc -h
[v1.10-41]
[ further output snipped ]
netcat --version
, wie in einer anderen Antwort vorgeschlagen, hat einen „ungültige Option“-Fehler ausgegeben und scheint --version
daher möglicherweise ein universeller Test zu sein.-h