首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从命令行运行程序,提示密码并自动为其提供密码(cmd.exe,python)

从命令行运行程序,提示密码并自动为其提供密码(cmd.exe,python)
EN

Stack Overflow用户
提问于 2015-05-14 21:37:41
回答 2查看 477关注 0票数 1

我有提示密码的命令行程序:

代码语言:javascript
复制
> cwrsync root@NN.NN.NN.NN:/src /cygdrive/c/dst

输出(当我从cmd.exe命令行运行它时):

代码语言:javascript
复制
root@NN.NN.NN.NN's password:

当我手动输入密码时,一切正常。输出:

代码语言:javascript
复制
skipping directory src

我想从命令行或python脚本自动提供它的密码。

我试过了:

一。在命令行中:

代码语言:javascript
复制
> echo pass|cwrsync -r root@NN.NN.NN.NN:/src /cygdrive/c/dst

不起作用。输出:

代码语言:javascript
复制
root@NN.NN.NN.NN's password:

二。来自python脚本。test.py:

代码语言:javascript
复制
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

不是在工作。输出:

代码语言:javascript
复制
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]
EN

回答 2

Stack Overflow用户

发布于 2015-05-14 22:03:05

面向安全的程序通常要求在直接io上输入密码,而不是读取标准输入。和as:

代码语言:javascript
复制
echo pass|cwrsync -r root@NN.NN.NN.NN:/src /cygdrive/c/dst

确实询问了密码,我假设csrsync直接从控制台读取。

在这种情况下,如果没有一些工作和低级编程,您就无法实现自动化,因为您必须模拟键盘操作。相反,您应该搜索文档,因为它看起来使用了底层ssh,因此很可能接受公钥对。如果它接受一个没有密码短语,那么您应该能够使其自动化。

票数 2
EN

Stack Overflow用户

发布于 2015-05-14 21:51:34

尝试在标准输入字符串communicate调用中发送一个换行符,如下所示:

代码语言:javascript
复制
import subprocess
cmd = ['cwrsync', '-r', 'root@NN.NN.NN.NN:/src', '/cygdrive/c/dst']
proc = subprocess.Popen(cmd, 
                        stdout=subprocess.PIPE, 
                        stderr=subprocess.PIPE, 
                        stdin=subprocess.PIPE, 
                        shell=True)
std1, std2 = proc.communicate("pass\r\n\r\n")
print std1
print std2

您还应该看看它是否适用于shell=False (来自subprocess docs):

使用shell=True

可能会带来安全风险。有关详细信息,请参阅Frequently Used Arguments下的警告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30238840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档