使用expect脚本自动化SCP多个文件

时间:2014-09-11 15:39:23

标签: linux expect scp

所以我看过很多帖子,也许我还没有看到合适的帖子。

我正在使用expect脚本将我的语言环境中的多个文件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

2 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:1)

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

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