sshをシェルスクリプトにパイプしますが、stdinエコーを見ることができません

sshをシェルスクリプトにパイプしますが、stdinエコーを見ることができません

.bashrc文字を読み、いくつかのキーワードを変更するawkスクリプトがあります。他の基本コマンドをパイプするとうまくいきますtail -fが、sshをパイプすると問題が発生します。 Enterを押すまで端末に入力した内容が表示されないことを除いて、すべてが期待どおりに機能します。

~# ssh admin@localhost -p 5200 | my-script

admin@localhost's password: 

admin connected from 127.0.0.1 using ssh on home

admin@ssh-server> exit   ***<- I don't see this line (including the prompt) at all on terminal until I type my command (exit) and press Enter***

Connection to localhost closed.

考えるなぜこれが起こるのか理解していますが、解決策がわかりません。 EOLが返されるまで、sshの対話型コマンドはパイプを介して送信されないと思います。私はunbuffer / stdbufからtee / scriptまで検索し、さまざまなリダイレクトコマンドを使用して見つけることができるすべてを試しましたが、運がありませんでした。

ノート:実際には、EOLの後に文字列を私のスクリプトに渡すことができます。ちょうど私が入力している内容を見ることができればいいのです。つまり、ターミナルstdinはいつものようにエコーする必要があります。

ベストアンサー1

私は次のことができます:

$ ssh [email protected] | tee output
Last login: Tue Aug 15 03:06:11 2017 from 127.1.2.3
$ ls /
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
$ logout
Shared connection to example.com closed.
$ cat output
Last login: Tue Aug 15 03:06:11 2017 from 127.1.2.3
$ ls /
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
$ logout

ssh通常、リモートホストを編集すると、プロンプト、私が入力した内容などがすべて表示されます。

おすすめ記事