web-dev-qa-db-ja.com

Bashのシンプルなソケットサーバー?

TCP port/ip addressに素早くバインドし、すべての情報をSTDOUTに出力するだけの方法はありますか?127.0.0.1:4444に書き込む簡単なデバッグソリューションがあります。 dは単純にbashからポートをバインドし、遭遇したすべてを印刷できるようにしたいのですが、これを行う簡単な方法はありますか?

70
Naftuli Kay
_$ nc -k -l 4444 > filename.out
_

nc(1) を参照してください

105

bashでそれを行う方法を尋ねたからといって、netcatの答えは非常に有効です。

  $ exec 3<>/dev/tcp/127.0.0.1/4444
  $ cat <&3
46

期待どおりに機能しています:

 nc -k -l 4444 |bash

そしてあなた

echo "ls" >/dev/tcp/127.0.0.1/4444

次に、bashによって実行されるリストが表示されます。

[簡単なセキュリティ警告]
もちろん、このようなものをコンピューター上で実行したままにしておくと、ネットワーク内の任意のホスト上の任意のユーザーアカウントからコマンドを送信できるため、あらゆる種類の攻撃に対して広く開かれたゲートウェイがあります。これはセキュリティ(認証、識別)を一切実装せず、送信されたすべてのコマンドをネットワーク上で暗号化せずに送信するため、非常に簡単に悪用される可能性があります。

10
luk

@Freedom_Benが示唆したncatを使用した回答の追加:

ncat -k -l 127.0.0.1 4444

およびncatのオプションの説明:

-k, --keep-open            Accept multiple connections in listen mode
-l, --listen               Bind and listen for incoming connections
4
Kilokahn