我尝试运行我的 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。
有人知道如何解决这个问题吗?
我不熟悉
pxssh
,但看看它所说的文档
pxssh 是系统上 SSH 命令的屏幕抓取包装器。
您的基础映像
python:3.10.12-slim-bookworm
不包含 ssh 命令。因此,您应该在 ssh
的末尾添加 RUN apt-get install ... ssh
并安装它。这应该可以解决:
命令未找到或不可执行:ssh