5

次のスクリプトが正常に実行されています。ただし、ワイルドカードを使用して複数のファイルをコピーしようとすると、「そのようなファイルまたはディレクトリはありません」というエラーがスローされます。

このコードは機能します:

#!/usr/bin/expect -f
spawn scp file1.txt root@192.168.1.156:/temp1/.
expect "password:"
send "iamroot\r"
expect "*\r"
expect "\r"

以下は機能しません。

#!/usr/bin/expect -f
spawn scp * root@192.168.1.156:/temp/. #fails here
….
4

2 に答える 2

7

*通常、シェル(bash)によって拡張されますが、この場合、シェルはexpectです。私はそれexpectが拡大していないのではないかと思い*ます。

試す:

spawn bash -c 'scp * root@192.168.1.156:/temp/.'

説明:

#!/usr/bin/expect -f
spawn echo *
expect "*"

spawn bash -c 'echo *'
expect "file1 file2…"
于 2012-07-02T08:14:23.400 に答える
-1

AFAIK scpはデフォルトでファイルコピーになりますが、bashは現在のパスに*が見つかった場合、ディレクトリにも展開される可能性があります。

おそらく-r(再帰的)を試してみると問題が解決する可能性があります(現在シナリオをテストできないため、わかりません)。

または、フォルダ構造全体をコピーしたくない場合はscp *.txt ...、必要に応じて使用できます。

于 2012-06-19T00:04:24.617 に答える