GNU/Linux >> Linux の 問題 >  >> Linux

8 実用的な Linux Netcat NC コマンドの例

Netcat または nc は、ネットワークをデバッグおよび調査するためのネットワーク ユーティリティです。

このユーティリティは、TCP/UDP 接続の作成と調査に使用できます。このユーティリティの最大の用途は、TCP/UDP ソケットを処理する必要があるスクリプトです。

この記事では、いくつかの実用的な例によって netcat コマンドについて学びます。

1.サーバー クライアント アーキテクチャの Netcat

netcat ユーティリティは、着信接続をリッスンする指定されたポートでサーバー モードで実行できます。

$ nc -l 2389

また、開いたばかりのポート (2389) に接続しようとするクライアント モードで使用することもできます

$ nc localhost 2389

ここで、クライアント側でテキストを書くと、サーバー側に届きます。これが証拠です:

$ nc localhost 2389
HI, server

サーバーが実行されている端末で:

$ nc -l 2389
HI, server

したがって、netcat ユーティリティをクライアント サーバー ソケット通信で使用できることがわかります。

2. Netcat を使用してファイルを転送する

netcat ユーティリティを使用してファイルを転送することもできます。クライアント側で、以下を含む「testfile」という名前のファイルがあるとします:

$ cat testfile
hello test

サーバー側には空のファイル「test」があります

ここで、サーバーを次のように実行します:

$ nc -l 2389 > test

クライアントを次のように実行します:

cat testfile | nc localhost 2389

ここで、サーバー側で「テスト」ファイルを見ると、次のように表示されます:

$ cat test
hello test

これで、ファイル データがクライアントからサーバーに転送されたことがわかります。

3. Netcat はタイムアウトをサポート

接続を永久に開いたままにしたくない場合があります。その場合、「-w」スイッチを使用して、接続のタイムアウトを指定できます。したがって、-w フラグとともに指定された秒数の後、クライアントとサーバー間の接続が終了します。

サーバー:

nc -l 2389

クライアント:

$ nc -w 10 localhost 2389

上記の接続は 10 秒後に終了します。

注 :サーバー側で -w フラグを -l フラグと一緒に使用しないでください。その場合、-w フラグは効果がなく、接続は永久に開いたままになります。

4. Netcat は IPV6 接続をサポート

フラグ -4 または -6 は、netcat ユーティリティがどのタイプのアドレスを使用する必要があるかを指定します。 -4 は nc に IPV4 アドレスの使用を強制し、-6 は nc に IPV6 アドレスの使用を強制します。

サーバー:

$ nc -4 -l 2389

クライアント:

$ nc -4 localhost 2389

ここで、netstat コマンドを実行すると、次のように表示されます:

$ netstat | grep 2389
tcp        0      0 localhost:2389          localhost:50851         ESTABLISHED
tcp        0      0 localhost:50851         localhost:2389          ESTABLISHED

IPV6 アドレスが使用されている場合、上記の出力の最初のフィールドには接尾辞「6」が含まれます。この場合はそうではないため、サーバーとクライアント間の接続は IPV4 アドレスを使用して確立されます。

ここで、nc に IPV6 アドレスの使用を強制すると

サーバー:

$ nc -6 -l 2389

クライアント:

$ nc -6 localhost 2389

ここで、netstat コマンドを実行すると、次のように表示されます:

$ netstat | grep 2389
tcp6       0      0 localhost:2389          localhost:33234         ESTABLISHED
tcp6       0      0 localhost:33234         localhost:2389          ESTABLISHED

したがって、'tcp' を含む接尾辞 '6' は、nc が現在 IPV6 アドレスを使用していることを示しています。

5. Netcat で STDIN からの読み取りを無効にする

この機能は、フラグ -d を使用して実現できます。次の例では、このフラグをクライアント側で使用しています。

サーバー:

$ nc -l 2389

クライアント:

$ nc -d localhost 2389
Hi

-d オプションを使用して stdin からの読み取りが無効になっているため、テキスト「こんにちは」はサーバー側に送信されません。

6. Netcat サーバーを強制的に稼働させる

netcat クライアントがサーバーに接続されていて、しばらくしてからクライアントが切断された場合、通常は netcat サーバーも終了します。

サーバー:

$ nc -l 2389

クライアント:

$ nc localhost 2389
^C

サーバー:

$ nc -l 2389
$

したがって、上記の例では、クライアントが切断されるとすぐにサーバーも終了したことがわかります。

この動作は、サーバー側で -k フラグを使用して制御し、クライアントが切断された後でもサーバーを強制的に稼働させます。

サーバー:

$ nc -k -l 2389

クライアント:

$ nc localhost 2389
^C

サーバー:

$ nc -k -l 2389

したがって、-k オプションを使用すると、クライアントが切断された場合でもサーバーが稼働し続けることがわかります。

7. EOF 後も稼働するように Netcat クライアントを構成する

Netcat クライアントは、EOF の受信後も稼働し続けるように構成できます。通常のシナリオでは、nc クライアントが EOF 文字を受信するとすぐに終了しますが、-q フラグを使用すると、この動作を制御することもできます。このフラグは、クライアントが終了するまで (EOF を受け取った後) に待機する秒数を表す数値を想定しています

クライアントは次のように起動する必要があります:

nc  -q 5  localhost 2389

クライアントが EOF を受信すると、5 秒間待機してから終了します。

8. UDP プロトコルで Netcat を使用する

デフォルトでは、nc ユーティリティが作成するすべてのソケットは TCP プロトコルですが、このユーティリティは UDP プロトコルでも動作します。 UDP プロトコルを有効にするには、-u フラグを使用します。

サーバー:

$ nc -4 -u -l 2389

クライアント:

$ nc -4 -u localhost 2389

これで、サーバーとクライアントの両方が UDP プロトコルを使用するように構成されました。これは、次の netstat コマンドで確認できます。したがって、この接続は UDP プロトコルを使用していることがわかります。

$ netstat | grep 2389
udp        0      0 localhost:42634         localhost:2389          ESTABLISHED

Linux
  1. Linuxでのrsyncコマンドの実用例

  2. Linuxでのヘッドコマンドの5つの実用例

  3. Linuxでのddコマンドの5つの実用例

  1. Linuxでのcdコマンドの7つの実用例

  2. Linuxでのchgrpコマンドの5つの実用例

  3. Linuxでのcpコマンド:7つの実用的な例

  1. 初心者向けのLinuxLSコマンドの16の実用例

  2. Linuxシャットダウンコマンド:5つの実用的な例

  3. 10 実用的な Linux nm コマンドの例