Twisted SSH curl“'CreateProcess”,“系统找不到指定的文件。”

2024-09-29 23:29:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用twisted创建了一个类似于here的SSH服务器。我试着给它添加curl功能,如下所示:

class CurlProcessProtocol(protocol.ProcessProtocol):
    def connectionMade(self):
        self.transport.closeStdin()

def do_curl(self, *args):
    "Sets up a download"
    curlProcess = CurlProcessProtocol()
    args = tuple(['curl'])+args
    reactor.spawnProcess(curlProcess, 'curl', args)

我有curl运行程序所需的文件。当我连接到SSH服务器并尝试使用curl命令时,我得到以下错误:Error: (2, 'CreateProcess', 'The system cannot find the file specified.')我尝试在'curl'之前添加{},但没有成功。在


Tags: self功能服务器heredeftwistedargscurl
2条回答

尝试使用curl可执行文件的实际路径。很可能它不在os.getcwd()中。/usr/bin更有可能(或者可能是/bin或{}或其他系统定义的位置)。您可以通过在shell中使用which curl来找到它。

或者,将PATH环境变量添加到spawnProcess调用-

reactor.spawnProcess(
    curlProcess, 'curl', args, env={b"PATH": os.environ[b"PATH"]})

或者,可能更好的是,添加您的整个环境:

^{pr2}$

PATH控制系统在何处查找相对路径名,如“curl”,当尝试执行它们时。如果未设置,则必须指定绝对路径才能执行任何操作。

好吧,所以我需要更具体一点。这是一个工作卷发。我必须在getcwd()后面加一个“\”,在curl后面加一个“.exe”。

def do_curl(self, *args):
    "Sets up a download"
    curlProcess = CurlProcessProtocol()
    args = tuple([os.getcwd()+'\curl.exe'])+args
    reactor.spawnProcess(curlProcess, os.getcwd()+'\curl.exe', args)

相关问题 更多 >

    热门问题