从 Docker 中的 python 脚本通过 SSH 登录时出错

问题描述 投票:0回答:1

我尝试运行我的 python 脚本,该脚本使用 pexpect 库通过 ssh 登录远程计算机。该脚本将从 Docker 容器运行。

Python脚本:

from pexpect import pxssh
import os


def main():
    username = os.environ.get("USERNAME")
    password = os.environ.get("PASSWORD")
    hostname = os.environ.get("HOSTNAME")
    
    client = pxssh.pxssh()
    client.login(hostname, username=username, password=password)
    print("Login successful")


if __name__ == "__main__":
    try:
        main()
    except Exception as e:
        print(e)

Dockerfile:

FROM python:3.10.12-slim-bookworm
RUN apt-get update
RUN apt-get install -y --no-install-recommends build-essential gcc

WORKDIR /app

RUN python3 -m venv /app/venv
ENV PATH="/app/venv/bin:$PATH"

RUN pip install --upgrade pip --no-cache

ADD requirements.txt requirements.txt
RUN pip3 install -r requirements.txt --no-cache

ADD ./src ./src


ENTRYPOINT ["python3", "src/connect.py"]

构建形象:

docker build -t connect .

运行容器

docker run --env-file .env connect

当我在本地运行脚本时,我成功登录,但是当我尝试使用 docker 时,出现错误:找不到命令或无法执行命令:ssh。

有人知道如何解决这个问题吗?

python docker ssh pexpect pxssh
1个回答
0
投票

我不熟悉

pxssh
,但看看它所说的文档

pxssh 是系统上 SSH 命令的屏幕抓取包装器。

您的基础映像

python:3.10.12-slim-bookworm
不包含 ssh 命令。因此,您应该在
ssh
的末尾添加
RUN apt-get install ... ssh
并安装它。这应该可以解决:

命令未找到或不可执行:ssh

© www.soinside.com 2019 - 2024. All rights reserved.