リモートサーバーに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 $USERNAME
SMBサーバーへの接続に使用する必要があるユーザー名を示します。
明らかにする必要があります//server/sharename
。
SMBサーバーの$PASSWORD
パスワード。$USERNAME
-c 'get \\dir\\filename.gz /dev/fd/1'
実行する必要があるコマンドは次のとおりです。指定されたファイル(バックスラッシュを2倍にしてエスケープ)を取得し、コマンドの標準出力と同じローカルファイルに送信します/dev/fd/1
。その後、zcat
追加の処理が必要になる前に標準出力をパイプして拡張します。