gpt4 book ai didi

python - 使用 SSL : pexpect spawn/expect doesn't work 在 apache 上运行 django 应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:37 24 4
gpt4 key购买 nike

我在启用了 SSL 的 Apache 2.2 上运行 Django 应用程序。当我没有启用 SSL 时,一切都很好。但是出于安全考虑,可能对操作系统如何 fork 进程等有一些限制。我根本不知道这些。

使用的操作系统:Solaris(不确定是否重要,但可能)Django v1.4、Apache 2.2、Python 2.7

在我的一个观点中概述我正在做的事情:

def run_step(request, action):    if (action == "action1"):        p = subprocess.Popen("command1",             shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)    elif (action == "action2"):       password = mylib.getpasswd()       ## Method 1: with pexpect       command = pexpect.spawn('su root -c \' command2 \'')       command.expect('[pP]assword*')       command.sendline(password)       ## Method 2: with subprocess and a simple command       #command = subprocess.Popen('ls > log.file',           shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)       ## Method 3: with subprocess stdin PIPE        #command = subprocess.Popen('command2', shell=True,         stdout=subprocess.PIPE,stderr=subprocess.STDOUT,stdin=subprocess.PIPE)       #command.stdin.write(password)       #command.communicate()       ## I tried with shell = False,        ## with stdin.flush() and communicate(password) too.

“Action1”的命令执行得很好。但是那些需要像“Action2”这样的交互的问题。我尝试了三种不同的方法:

  • 方法 1:像往常一样使用 pexpect 发送它但它失败了 - 命令根本没有执行。
  • 方法 2:尝试在没有交互的情况下进行子流程调用 - 有效。
  • 方法 3:尝试使用标准输入管道调用子进程来尝试交互,但再次失败。

我现在不确定该怎么做。任何帮助将不胜感激。

最佳答案

这是对我有用的:

使用 python 中的“threading”模块将 pexpect 调用作为单独的线程生成,然后使用 sendline 发送密码。

import threading

command = 'ls -l' #some_command
t = threading.Thread(target=some_function,args=(command,))
t.start()


def some_function(command):
some_process = pexpect.spawn(command)
some_process.expect('[pP]assword*')
some_process.sendline(some_password)
some_process.expect(pexpect.EOF,timeout=1000)

我仍然不明白为什么 pexpect 模块不能在主线程上工作。仍然会很感激任何答案,但我现在将使用此解决方案。

关于python - 使用 SSL : pexpect spawn/expect doesn't work 在 apache 上运行 django 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34675040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com