web-dev-qa-db-ja.com

ソケットに配管するための標準のUnixコマンドラインツール

いくつかのアプリケーションと、Solarisの名前付きパイプに出力を送信する標準のUnixツールがありますが、名前付きパイプはローカルストレージ(Solaris上)からしか読み取ることができないため、ネットワーク経由でアクセスしたり、パイプを配置したりすることはできません。出力へのネットワークアクセス用のNFSストレージ。

コマンドラインツールの出力をソケットに直接転送する類似の方法があるかどうか疑問に思いました。たとえば、次のように言います。

mksocket mysocket:12345
vmstat 1 > mysocket 2>&1
22
Robert Gould

Netcat これには最適です。これが いくつかの一般的な例のあるページ です。

ケースの使用法は次のようになります。

  1. サーバーは接続をリッスンし、出力を送信します。

    server$ my_script | nc -l 7777

  2. リモートクライアントは、ポート7777でserverに接続し、データを受信し、ログファイルに保存します。

    client$ nc server 7777 >> /var/log/archive

24
Todd Gamblin

netcatncとも呼ばれます)はまさにあなたが探しているものです。かなり標準的になりつつありますが、すべてのシステムで利用できるわけではありません。

socat は、より多くの機能を備えたnetcatの強化バージョンのようですが、あまり一般的ではありません。

Linuxでは、/dev/tcp/<Host>/<port>を使用することもできます。詳細については、 Advanced Bash-Scripting Guide を参照してください。

16
Brian Campbell

netcatは、ネットワーク上でパイプを確立するのに役立ちます。

6
Chris

次のいずれかを使用することをお勧めします。

  1. ssh:セキュア(暗号化)、Solarisにすぐにインストールされていますが、非対話型セッション用にキーペアを設定する必要があります[.____]。
  2. netcat:セットアップは簡単ですが、安全ではなく、攻撃を受けやすい
4
vladr

誰もがnetcatで正しい方向に進んでいます。ただし、ncにパイプして応答を期待している場合は、-q <seconds>オプションを使用する必要があることを付け加えておきます。マニュアルから:

-q秒

stdinでEOFの後に、指定された秒数だけ待ってから終了します。秒が負の場合は、永久に待ちます。

たとえば、SSHエージェントと対話する場合は、次のようにすることができます。

echo -en '\x00\x00\x00\x01\x0b' | nc -q 1 -U $SSH_AUTH_SOCK | strings

より完全な例は https://Gist.github.com/RichardBronosky/514dbbcd20a9ed77661fc3db9d1f93e4

*私はこれを https://ptspts.blogspot.com/2010/06/how-to-use-ssh-agent-programmatically.html から盗みました

0
Bruno Bronosky