繁体   English   中英

python子进程'ssh'不返回这样的文件或目录

[英]python subprocess 'ssh' returns no such file or directory

当我在本地运行这个子进程时,它可以工作,但是,当我将它部署在一个 azure 函数中时,它返回

(2, '没有那个文件或目录')

subprocess.run(['ssh', f'{user}@{host}', cmd],
                                    stdout=subprocess.PIPE,
                                    stderr=subprocess.PIPE,
                                    check=True)

来自 azure 的错误堆栈:

Exception while executing function: Functions.AxesSearchApi Result: Failure
Exception: FileNotFoundError: [Errno 2] No such file or directory: 'ssh'
Stack:   File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/dispatcher.py", line 347, in _handle__invocation_request
    call_result = await self._loop.run_in_executor(
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/dispatcher.py", line 511, in __run_sync_func
    return func(**params)
  File "/home/site/wwwroot/AxesSearchApi/__init__.py", line 29, in main
    sshProcess = subprocess.run(["ssh", f'{user}@{host}', cmd],
  File "/usr/local/lib/python3.8/subprocess.py", line 489, in run
    with Popen(*popenargs, **kwargs) as process:
  File "/usr/local/lib/python3.8/subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/local/lib/python3.8/subprocess.py", line 1702, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)

azure 函数工作人员故意瘦身,通常会从他们部署的映像中省略任何非必要的工具

看起来 python 3 图像不包含ssh二进制文件

您可能可以构建一个自定义的基于 docker 的镜像,而不是使用预构建的镜像并将ssh安装到其中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM