
コマンドラインツールを使用しておりftp
、スクリプト入力とユーザー入力を組み合わせたいです。ユーザーが入力した場合にのみ、プロンプトは次のようになります。
ftp>
しかし、次のスクリプトを使用していくつかの入力を挿入しようとすると
{echo "user username passwd"; cat;} | ftp -n server.tld
インタラクティブモードを引き続き使用するように強制するにはどうすればよいですかftp
?
私は標準的なシェルツールに基づいたソリューションを好みます。
答え1
ftp
例と同じ対話型コマンドラインツールと対話するプログラムがあります。expect
。これはスクリプト言語を拡張する特別なスクリプトシェルですtcl
。
非常に強力ですが、その内容をすべて理解していないまま、ただ通過することができます。非常に便利なツールはautoexpect
、予想されるスクリプトで対話型セッションを記録できます。録音されたスクリプトは基本を理解するのにかなり役立ちます。
スクリプトはexpect
対話型プログラムと組み合わせることができます(たとえば、ユーザーftp
と対話型プログラムの対話と組み合わせることができます。スクリプトinteract
のコマンドを使用してexpect
一時的にユーザーに制御を与えることができます
。受信しているユーザーは制御権を持っているので、実際にはユーザーとスクリプトの両方がプログラムと同時に対話します。