TCP(netcat / socatに似ています)を介してコマンドパラメータとして提供されるリテラル文字列を送信するには?

TCP(netcat / socatに似ています)を介してコマンドパラメータとして提供されるリテラル文字列を送信するには?

シェル環境でTCPを介して文字列を送信するには、次のようにします。

echo text | nc 1.2.3.4 9876

クール。インタラクティブには機能します。別のプログラムでサブプロセスを作成してプログラムでこれを実行したいので、シェルとパイプを使用したくないと思います。

また配布中なのでDistroのないDockerコンテナ、殻がありません。

TCPを介してコマンドパラメータを文字列として送信できる既存のツールはありますか?私が探している(仮想)バリアントですnc。例:

nc 1.2.3.4 9876 text

その機能は次のとおりです。

echo text | nc 1.2.3.4 9876

(出力も必要です。)

私はこれのために私自身のアプリケーションを書こうとしますが、それがすでに存在し、stdinの代わりにargvの1つに渡されることを想像できます。

これを見ると、socatファイルから読み取ることがOPENできます。これは私が望むものと非常に似ていますが、実行するコマンドの引数として文字列を渡す必要があります。

完全なコンテキストでは、Dockerコンテナのエントリポイントは、シェルや他の解釈された言語なしでglibc(socat / ncに似ています)などの純粋なOSのデフォルトの依存関係を使用して設定可能でなければなりません。

ベストアンサー1

パラメータを受け入れてTCP接続を介して送信するプログラムがわかりません。

しかし、あなたはコメント、特に次の行であなたの質問に答えました。

ENTRYPOINT ["/bin/sh", "-c", "mycommand"]

画像から最小限のアプリケーションスペースが欲しいと思いますが、最高の解決策は元のコマンドを使用することshell ですnetcat。まあ、少なくともあなたがしたいことをテストしてください。

結局のところ、単一の実行可能ファイルに戻るには、それを実行するプログラムを直接作成する必要があります。

アイデア、わかりましたこの例、スクリプトを実行するためのPython設定の表示、

FROM python:2.7-slim AS build-env
ADD . /app
WORKDIR /app

FROM gcr.io/distroless/python2.7
COPY --from=build-env /app /app
WORKDIR /app
CMD ["hello.py", "/etc"]

Cこれはすべてのタスクを実行するプログラムを開発するよりも簡単で高速ですが、実際にはPythonを次のように使用しています。シェル。最後に、socat必要なことができると思われる場合は、socatファイル(画像に含まれている)で読み取りを使用でき、そのファイルにはテキスト文字列が含まれています。

おすすめ記事