这是我的脚本,uses 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]
没有进度条,没有变化。无法弄清楚是什么。
任何建议我的错误在哪里?
答案 0 :(得分:0)
Sublime Text控制台/构建系统不是交互式的,因此很遗憾无法在构建期间输入输入。要解决这个问题,您需要使用其他方式进行身份验证,例如使用SSH密钥,或者您需要编写一个使用sublime.Window.show_input_panel()
的小plugin来获取密码。用户。