SMBを使用して、ローカルコンピュータのローカルコマンドにファイルの内容をパイプします。

SMBを使用して、ローカルコンピュータのローカルコマンドにファイルの内容をパイプします。

リモートサーバーに100gigファイルがあります。私がしなければならないのは、そのコンピュータに接続してファイルをzcatしてからzcatの出力をローカルコンピュータのコマンドにパイプすることです。パイプの左側はリモートソースから出てきます。

私の状況はどんな姿になると思いますか?命令で構成 リモートZcatコマンド

remoteZcatCommand 100gigRemotefile.gz | grep findSomeStuff

grep findSomeStuffこれは実際にはローカルシステムにハードウェアが必要なコマンドなので、少し誤解を招く可能性があります。また、100gigファイルをローカルコンピュータに移動することはオプションではありません。

ベストアンサー1

smbclient -E -U $USERNAME //server/sharename $PASSWORD -c 'get \\dir\\filename.gz /dev/fd/1' 2>/dev/null | zcat | yourcommand

実際には、目的の出力を混乱させる標準出力ではなく、標準エラーですべてのメッセージを送信するように-E指示します。smbclient私はこのメッセージに興味がありません2>/dev/null。したがって、メッセージはです。

-U $USERNAMESMBサーバーへの接続に使用する必要があるユーザー名を示します。

明らかにする必要があります//server/sharename

SMBサーバーの$PASSWORDパスワード。$USERNAME

-c 'get \\dir\\filename.gz /dev/fd/1'実行する必要があるコマンドは次のとおりです。指定されたファイル(バックスラッシュを2倍にしてエスケープ)を取得し、コマンドの標準出力と同じローカルファイルに送信します/dev/fd/1。その後、zcat追加の処理が必要になる前に標準出力をパイプして拡張します。

おすすめ記事