在UNIX BASH

时间:2015-09-16 01:08:13

标签: bash unix expect scp

此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" '

3 个答案:

答案 0 :(得分:2)

不确定它有帮助,但我一直在寻找类似的目标。

表示:根据文件名/扩展名复制某些选定的文件,但位于不同的子文件夹(子文件夹的级别相同)中。

这有效,例如从Server:/CommonPath/SpecificPath/

复制.csv文件
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)。