我有以下脚本成功运行。但是,如果我尝试使用通配符,要复制多个文件,它会抛出一个错误,说“没有这样的文件或目录”。
此代码有效:
#!/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
….
答案 0 :(得分:3)
*
通常由shell(bash)扩展,但在这种情况下,shell为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…"
答案 1 :(得分:-1)
AFAIK scp默认为文件副本,而bash可能会扩展*到目录,如果在当前路径中找到任何目录。
也许尝试-r
(递归)可以解决您的问题(不确定,因为我现在无法测试场景)?
或者,如果您不想复制整个文件夹结构,可以根据需要使用scp *.txt ...
。