0

这是我的脚本,它使用 expect来填写 rsync 的密码字段,这是我让它与变量一起工作的唯一方法($FILE,欢迎提出建议)。

它在 cmd 中工作,输出符合预期(-P 开关输出进度条,所以我知道它无需检查即可工作)。

#!/bin/bash
cd "/cygdrive/c/"
FILE=$(cygpath -u $1); #full file path to sync
a='USER@HOST:/; expect "*?assword:*" {send "user_pass\r";interact};'
LINE="spawn rsync -P --port=port $FILE "$a 
expect -c "$LINE"

这是我在 .sublime-project 文件中的 Sublime Text 构建系统(我在路径中包含了 cygwin/bin,因此它可以识别 bash。)。

{
    "name" : "RSync This",
    "shell":  true,
    "cmd": ["bash","/cygdrive/c/rsync.sh","$file"]            
}

输出:

spawn rsync -P --port=22 /cygdrive/c/test USER@HOST:/
USER@HOST's password: [Finished in 0.8s]

没有进度条,没有变化。无法弄清楚什么给了。

任何建议我的错误在哪里?

4

1 回答 1

0

Sublime Text 控制台/构建系统不是交互式的,因此很遗憾在构建期间无法输入输入。为了解决这个问题,您要么需要一些其他的身份验证方式,例如使用 SSH 密钥,要么需要编写一个小插件,用于sublime.Window.show_input_panel()从用户那里获取密码。

于 2013-07-24T18:17:39.387 回答