【问题标题】:Copying SCP multiple files from remote server with wildcard argument in UNIX BASH在 UNIX BASH 中使用通配符参数从远程服务器复制 SCP 多个文件
【发布时间】:2015-12-12 10:07:46
【问题描述】:

这个 Expect 脚本是我的 UNIX Bash 脚本的一部分

expect -c " 
spawn scp yoko@sd.lindeneau.com:\"encryptor *.enc\" . 
expect password:  { send \"$PASS\r\"  }
expect 100%
sleep 1
exit
 "

我正在尝试使用这个 SCP 命令同时复制“加密器”和“*.enc”。控制台告诉我找不到'*.enc"'

【问题讨论】:

标签: bash unix expect scp


【解决方案1】:

多个文件的语法:

$ scp your_username@remotehost.edu:~/\{foo.txt,bar.txt\} .

我猜你的情况(未经测试)

scp yoko@sd.lindeneau.com:\\{encryptor, \*.enc\\} .

【讨论】:

    【解决方案2】:

    不确定它是否有帮助,但我正在寻找类似的目标。

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

    这有效,例如从Server:/CommonPath/SpecificPath/复制.csv文件

    scp -r Server:/CommonPath/\*/\*csv YourRecordingLocation
    

    我什至测试了更复杂的“perl like”正则表达式。

    不确定-r 选项是否仍然有用。

    【讨论】:

    • 抱歉这个界面去掉了反斜杠前面的通配符。所以应该是 scp -r Server:/CommonPath/\*/\*csv YourRecordingLocation
    【解决方案3】:
    #!/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)。

    【讨论】:

      猜你喜欢
      • 2020-02-25
      • 2016-04-19
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 2014-11-18
      • 2019-11-07
      • 2015-11-05
      相关资源
      最近更新 更多