【问题标题】:Automate SCP with multiple files with expect script使用期望脚本自动化 SCP 与多个文件
【发布时间】:2014-11-05 15:41:13
【问题描述】:

所以我看过很多关于这个的帖子,也许我只是没有看到正确的帖子。

我正在使用一个期望脚本将多个文件从我的语言环境 scp 到远程。我不想为无密码登录设置密钥,因为这样服务器就不会被吹走并且无需更多工作就可以站起来,是的,我可以自动创建密钥,我宁愿不这样做。所以我希望能够使用 * 但每次我使用 * 它都会告诉我。我想使用 * 而不是全名的原因是因为版本号会不断变化,我不想每次都手动更改脚本。

/path/{Install.sh,programWithVerionAfter*\}: No such file or directory

Killed by signal 1. 

我希望这是一个简单的修复或解决方法。我想做的就是 scp 这些文件,这样我就可以通过单击一个按钮来自动化安装过程。提前感谢您的任何帮助

#!/usr/bin/expect -f

spawn scp /path/\{Install.sh,programWithVerionAfter*\} "root@IP:/tmp/.
expect {
   -re ".*es.*o.*" {
   exp_send "yes\r"
   exp_continue
  }
  -re ".*sword.*" {
    exp_send "Password\r"
  }
}
interact

【问题讨论】:

    标签: linux expect scp


    【解决方案1】:

    我通过更多的谷歌搜索找到了我想要的东西。感谢您的帮助,希望这对其他人有帮助

    http://www.linuxquestions.org/questions/linux-general-1/scp-with-wildcard-in-expect-834813/

    #!/usr/bin/expect -f
    
    spawn bash -c "scp /path/* root@IP:/tmp/"
    expect {
      -re ".*es.*o.*" {
        exp_send "yes\r"
        exp_continue
      }
      -re ".*sword.*" {
        exp_send "Password\r"
      }
    }
    interact
    

    【讨论】:

    • 我认为您会发现 Tcl 命令glob 在这种情况下很有用。
    【解决方案2】:

    您可以使用curl 通过 sftp 将文件从本地主机复制到远程主机(这与使用 scp 复制的所有意图和目的相同),并在命令中指定用户名和密码,如下所示:

    curl -T /files/to/copy/*  -u username:password ftps://ftpshost.domain.tld/
    

    【讨论】:

      猜你喜欢
      • 2012-12-29
      • 2014-02-19
      • 2019-03-09
      • 2010-11-23
      • 2014-01-16
      • 2016-08-21
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      相关资源
      最近更新 更多