所以我看过很多帖子,也许我还没有看到合适的帖子。
我正在使用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
答案 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/