此Expect脚本是我的UNIX Bash脚本的一部分
expect -c "
spawn scp yoko@sd.lindeneau.com:\"encryptor *.enc\" .
expect password: { send \"$PASS\r\" }
expect 100%
sleep 1
exit
"
我正在尝试复制加密器'和' * .enc'有一个SCP命令。控制台告诉我它无法找到' * .enc" '
答案 0 :(得分:2)
不确定它有帮助,但我一直在寻找类似的目标。
表示:根据文件名/扩展名复制某些选定的文件,但位于不同的子文件夹(子文件夹的级别相同)中。
这有效,例如从Server:/CommonPath/SpecificPath/
scp -r Server:/CommonPath/\*/\*csv YourRecordingLocation
我甚至测试过更复杂的" perl like"正则表达式。
不确定-r
选项是否仍然有用。
答案 1 :(得分:1)
多个文件的语法:
$ scp your_username@remotehost.edu:~/\{foo.txt,bar.txt\} .
我猜你的情况(未经测试)
scp yoko@sd.lindeneau.com:\\{encryptor, \*.enc\\} .
答案 2 :(得分:1)
#!/bin/bash
expect -c "
set timeout 60; # 1 min
spawn scp yoko@sd.lindeneau.com:{encryptor *.enc} .
expect \"password: $\"
send \"mypassword\r\"
expect eof
"
如果您的文件副本需要更长时间才能完成,则可以增加timeout
。我使用了expect eof
,它会等到scp
命令关闭。即我们在发送密码后等待scp
的文件结束(EOF)。