進行状況バーのさまざまな動作:ローカルとリモートのSSH bashスクリプト

進行状況バーのさまざまな動作:ローカルとリモートのSSH bashスクリプト

SSHを介してリモートで実行されているローカルスクリプトから最小進行状況バーを取得するのに問題があります。コマンドによっては、他の不要な進行インジケータ(wgetの点線)が表示されます。

私が意味するものを説明するために、例を見てみましょう。

wget -q --show-progress https://some.file -P /tmp
some.file     11%[=========>          ]  20,08M  4,47MB/s    ETA 38s  # Nice looking progress bar

同じコード行がリモートで実行されます。

ssh user@server 'wget -q --show-progress https://some.file -P /tmp'
     0K .......... .......... .......... .......... ..........  0% 1,43M 2m6s  # Not so nice for longer scripts and big files
    50K .......... .......... .......... .......... ..........  0% 1,73M 1m55s 
   100K .......... .......... .......... .......... ..........  0% 5,16M 88s
   150K .......... .......... .......... .......... ..........  0% 2,56M 84s
   200K .......... .......... .......... .......... ..........  0% 5,14M 74s
   250K .......... .......... .......... .......... ..........  0% 5,36M 67s
... (etc)

カールがうまく機能することに言及したいと思います。しかし、私が言ったように、tarを使用して抽出中に進行状況バーを取得しようとすると、pvでも同じ問題に直面しました。

ベストアンサー1

マニュアルページから:

--progress=type
使用する進行状況インジケータの種類を選択します。法的指定子は「ドット」と「バー」です。

デフォルトでは「バー」マークが使用されます。検索状態を示すために、ASCIIプログレスバーグラフィック(「温度計」ディスプレイとも呼ばれる)を描画します。 出力がTTYでない場合、デフォルトでは「ポイント」列が使用されます。

最初のフラグメントの進行状況バーは「バー」、2番目のフラグメントは「ドット」です。コマンドラインで提供されたコマンドを実行すると、デフォルトでsshリモート側にttyが割り当てられないため、進行状況バーのwgetスタイルが変更される可能性があります。

wget --progress=bar:forceそのスタイルを選択するように強制したり、ssh -tSSHクライアントにTTYを割り当てるように指示したりできます。

おすすめ記事