私は以下ssh
を使ってリモートファイルを解凍しました。
ssh host "cat file.tgz" | tar xf -
これは非常にうまく機能します。しかし、forceコマンドを使用すると、pty割り当てがコマンドの出力を変更することがわかりました。
ssh host -T "cat file.tgz" >first_file
ssh host -t "cat file.tgz" >second_file
ここでは、最初のファイルは問題ありませんが、2番目のファイルが破損しています。
ptyの割り当てによって出力が変わるのはなぜですか?
ベストアンサー1
読むのに役立ちますssh
マニュアルページ:
-T Disable pseudo-tty allocation.
-t Force pseudo-tty allocation. This can be used to execute arbi‐
trary screen-based programs on a remote machine, which can be
very useful, e.g. when implementing menu services. Multiple -t
options force tty allocation, even if ssh has no local tty.
言うと分配するㅏ医者tty、リモート側のすべてのプロセスは、接続が「実際の」端末であることを確認でき、接続が対話型であるため、追加のメッセージが送信されます。シェル初期化中にを使用して確認できる端末モードも設定しますstty -a
。ターミナルモードは次の目的で使用されます。翻訳するキーボード入力とホスト間、ホストから端末に送信されるテキスト間:
- いいえ初期化すると、接続は端末ではないため、変換は行われません。
- そして初期化中、端末は
\n
改行文字()をキャリッジリターン改行文字(0x0d、0x0a)に変換します。また、(ほとんどのユーザーの場合)タブを空白に変換します。
説明された効果は次のとおりです。翻訳する。それがなければ、インタラクティブセッションが画面を横切って「階段」になり、使用できなくなります。
シェルは追加情報を印刷することもできますが、単一コマンドの場合提案シェルは通常転送しないため、@kbaは誤解を招く可能性があります。ヒント、上記のSSHコントロールは~C
次に適用されます。入力する代わりに出力。
端末で実行すると、ssh は接続を閉じるとメッセージも出力します。ただし、これは標準エラーに記録されます。