期待されるスクリプト - bashスクリプトファイルが見つかりません。

期待されるスクリプト - bashスクリプトファイルが見つかりません。

私の期待スクリプト

#!/usr/bin/expect -f

#I tried replacing sh - with bash -s still no positive results
spawn ssh xxxx@yyyy "sh -" < test.sh
expect "password: "
send "zzzzz\r"
expect "$ "

端末でこのコマンドを実行すると正常に動作します。

ssh xxxx@yyyy "sh -" < test.sh

しかし、expectスクリプトを通して実行すると失敗します。

これは、Expectスクリプトを介して実行したときの出力です。どこが間違っているのかわかりますか?

bash: test.sh: No such file or directory

PS:はい、ファイルが存在し、資格情報が正しいです。

ベストアンサー1

<問題は、sshを単独で実行すると(入力されたシェルを介して)リダイレクトがローカルで実行されますが、それを実行するとリモートシステムで実行されることです。expect指定spawnした引数は単にコピーされるため、<sshコマンドは次のようになります。そのうちのいくつかはリモコンに渡されます。これは'ssh' 'xxxx@yyyy' "sh -" '<' 'test.sh'シェルに入力したようには機能しません。

SSHの前にリダイレクトを解決するには、中間シェルコマンドを追加する必要があります。例えば、

spawn sh -c "ssh xxxx@yyyy sh - < test.sh"

おすすめ記事