1
一部のプログラムでは、テキストをプロンプトに渡す唯一の方法は、expect
コマンドを使用することです。stdinリダイレクトに失敗した場合のexpectコマンドの動作
ファイルからの入力のリダイレクト、または「ここのドキュメント」を使用したリダイレクトは機能しません。 期待どおりにテキストが正しく渡されますか?セキュリティ上の理由から、例えば
一部のプログラムでは、テキストをプロンプトに渡す唯一の方法は、expect
コマンドを使用することです。stdinリダイレクトに失敗した場合のexpectコマンドの動作
ファイルからの入力のリダイレクト、または「ここのドキュメント」を使用したリダイレクトは機能しません。 期待どおりにテキストが正しく渡されますか?セキュリティ上の理由から、例えば
、ssh
はそれがTTY、ファイル、パイプ、またはFIFOすることができstdin
から読み取れません、ユーザーのパスワードを読み取る必要があります。代わりに、ssh
は/dev/tty
を直接開き、パスワードがある場合はtty(そうでない場合は/dev/tty
が利用できない場合は、ssh
が失敗する)が読み取られます。
(Linux上)次の例を参照してください:
$ strace ssh -o PreferredAuthentications=password 127.0.0.1
[...]
open("/dev/tty", O_RDWR) = 4
close(4) = 0
open("/dev/tty", O_RDWR) = 4
[...]
write(4, "[email protected]'s password: ", 27) = 27
[email protected]'s password:
read(4,
ん期待はptyを作成し、そのPTY上でコマンドを実行しています。
「うまくいかない」とはどういう意味ですか? 'expect'はheredocsとリダイレクトされた入力を完全に処理できます。コードの[Minimal、Complete、Verifiable example](https://stackoverflow.com/help/mcve)を投稿してください。 – Aserre
@Aserre、 'echo" password "を書くことができない' ssh'を検討してください。 ssh user @ remote'と入力しますが、実際にパスワードを入力する必要があります。 (今のところ、ssh認証を行うためのより良い、より安全な方法があることを無視して) –