unable to provide password to a process with subprocess [python](无法使用子进程 [python] 向进程提供密码)
本文介绍了无法使用子进程 [python] 向进程提供密码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用子进程从 python 中运行脚本.我试过这个
I'm using subprocess to run a script from within python. I tried this
选项 1
password = getpass.getpass()
from subprocess import Popen, PIPE, check_call
proc=Popen([command, option1, option2, etc...], stdin=PIPE, stdout=PIPE, stderr=PIPE)
proc.stdin.write(password)
proc.stdin.flush()
stdout,stderr = proc.communicate()
print stdout
print stderr
还有这个
选项 2
password = getpass.getpass()
subprocess.call([command, option1, option2, etc..., password])
它们都不起作用,即密码没有发送到进程.如果我使用选项 2 并且不提供密码,则子进程会要求我提供密码并且一切正常.
Neither of them work, that is, the password is not sent to the process. If I use option 2 and do not provide password, the subprocess asks me for it and everething works.
推荐答案
这是一个非常基本的使用示例期待:
Here's a very basic example of how to use pexpect for this:
import sys
import pexpect
import getpass
password = getpass.getpass("Enter password:")
child = pexpect.spawn('ssh -l root 10.x.x.x "ls /"')
i = child.expect([pexpect.TIMEOUT, "password:"])
if i == 0:
print("Got unexpected output: %s %s" % (child.before, child.after))
sys.exit()
else:
child.sendline(password)
print(child.read())
输出:
Enter password:
bin
boot
dev
etc
export
home
initrd.img
initrd.img.old
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
selinux
srv
sys
tmp
usr
var
vmlinuz
vmlinuz.old
有更详细的示例这里.
这篇关于无法使用子进程 [python] 向进程提供密码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:无法使用子进程 [python] 向进程提供密码
基础教程推荐
猜你喜欢
- 用于分类数据的跳跃记号标签 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 筛选NumPy数组 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01