我有命令行程序提示密码:
> cwrsync root@NN.NN.NN.NN:/src /cygdrive/c/dst
输出(当我从命令行.exe命令行):
^{pr2}$当我手动输入密码时,一切正常。输出:
skipping directory src
我想从命令行或python脚本自动提供密码。在
我试过了:
一个。从命令行:
> echo pass|cwrsync -r root@NN.NN.NN.NN:/src /cygdrive/c/dst
不工作。输出:
^{pr2}$两个。来自python脚本。测试.py公司名称:
import subprocess
cmd = "cwrsync -r root@NN.NN.NN.NN:/src /cygdrive/c/dst"
proc = subprocess.Popen(cmd1, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
std1, std2 = proc.communicate("pass")
print std1print std2
不工作。输出:
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(235) [Receiver=3.1.1]
在stio上直接读密码而不是直接读密码。以及:
没有问密码,我想csrsync直接从控制台读取。在
在这种情况下,如果不做一些工作和低级编程,就无法实现自动化,因为您必须模拟键盘操作。您应该搜索文档,因为它看起来像使用了底层的
ssh
,所以它很可能接受公钥对。如果它接受一个没有密码短语的,你应该能够自动执行它。在尝试在stdin字符串
communicate
调用中发送一个换行符,如下所示:您还应该查看它是否与
shell=False
(来自subprocess docs)一起工作:相关问题 更多 >
编程相关推荐