Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在subprocess.call()之后输入密码_Python_Subprocess - Fatal编程技术网

Python 如何在subprocess.call()之后输入密码

Python 如何在subprocess.call()之后输入密码,python,subprocess,Python,Subprocess,我正在尝试构建一个python脚本,我每天都运行该脚本,从前2天的OpenDNS获取当天的DNS请求。这就是我目前所拥有的 import subprocess import datetime two = datetime.date.today() - datetime.timedelta(2) one = datetime.date.today() - datetime.timedelta(1) path = '~/Downloads/opendns-fetchstats-master' dat

我正在尝试构建一个python脚本,我每天都运行该脚本,从前2天的OpenDNS获取当天的DNS请求。这就是我目前所拥有的

import subprocess
import datetime
two = datetime.date.today() - datetime.timedelta(2)
one = datetime.date.today() - datetime.timedelta(1)
path = '~/Downloads/opendns-fetchstats-master'
dateRange = str(two) + ' ' + str(one)
dateRange2 = str(two) + 'to' +str(one)
username = 'email@email.com'
password = 'password'
outputFile = dateRange2 + '.csv'
print dateRange2
subprocess.call(
    ['cd ' + str(path) + ' && echo '+ str(password) + ' | bash fetchstats ' +
    str(username) + ' home ' + str(dateRange) + ' > ' + str(outputFile)],
    shell=True
    )
问题是,在它运行之后:

bash fetchstats ' + str(username) + ' <network_id> ' + str(dateRange) + ' > ' + str(outputFile)
部分工作,但进程返回以下错误,进程在下载所有数据之前结束

stty: 标准输入:设备的ioctl不正确 stty:标准输入:设备的ioctl不正确


有没有方法可以写这个,这样进程在提示时输入密码,然后等到下载完成后才结束进程?

< P>你应该考虑使用SudiPurtual.Popen,它允许你控制STDIN/STDUD/STDRR

还有

我发现:

echo password

工作正常,错误可以忽略。我认为它会在完成之前终止的原因是因为文件太小了。在终端中手动运行相同日期范围的文件后,文件大小匹配,这是因为该日期范围的可用数据量较小。

如果您要回答自己的问题,至少也要标记它,这样,这个问题就不会出现在未回答的列表中。直到两天过去,我才能将其标记为已回答。虽然这样做有效,但以明文打印密码从来都不是一个好主意。
echo password