bash - 如何在 docker 容器中执行期望脚本
问题描述
我有一个期望脚本,我想在 docker 容器中运行。我已将文件命名为 exp 扩展名并将文件称为 filename.exp。我正在使用 Ubuntu 泊坞窗图像。看起来容器能够识别以 #!/usr/bin/env bash 而不是 #!/usr/bin/expect 开头的文件
管道.yml 文件
jobs:
- name: job-pass-files
public: true
plan:
- get: resource-tutorial
- task: create-some-files
config:
platform: linux
image_resource:
type: docker-image
source: {repository: ubuntu}
inputs:
- name: resource-tutorial
run:
path: resource-tutorial/filename.exp
文件名.exp
#!/usr/bin/expect
eval spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no user@****
#use correct prompt
set prompt ":|#|\\\$"
interact -o -nobuffer -re $prompt return
send "Password\r"
interact
在大厅执行作业时出现以下错误
Backend error: Exit status: 500, message: {"Type":"","Message":"runc exec: exit status 1: exec failed: container_linux.go:348: starting container process caused \"no such file or directory\"\n","Handle":"","ProcessID":"","Binary":""}
有没有办法从 Docker 容器执行期望脚本。有图片支持吗?我是 docker 新手,所以非常感谢任何帮助
解决方案
我使用期望脚本在我的 16.04 Ubuntu 容器之一中安装需要用户提示的程序。确保安装期望的二进制文件,它不包括在内。这是它的样子:
Dockerfile:
<snip>
#Install yocto dependencies
RUN apt-get update && apt-get -y install gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
xterm repo expect locales
# Install
RUN /home/docker/scripts/install.exp
<snip>
安装.exp:
#!/usr/bin/expect
set timeout -1
<snip>
推荐阅读
- c++ - g++ -I 包含所有带有头文件的子目录
- javascript - 如何在提交反应之前检查多个文本框验证
- nuget - NuGet 版本范围 - 始终获取具有最高修订号的包
- mysql - 与另一个表连接时,即使第一个表为空(并且查询没有 IN),SQL 查询也会返回 null
- javascript - 如何使用 clip-path CSS 属性截取 HTML 节点的屏幕截图?(html2canvas 不适用于此)
- amazon-web-services - 如何让 AWS lambda 将字符串值传递给 s3 存储桶中的 index.html
- css - Angular NgStyle:列表图像样式
- linux-device-driver - 在 Android 上添加对 DSI 面板的支持的工作流程
- javascript - 循环遍历数据对象并将 Header 映射到 React 中的值
- rxjs - NestJS HttpService - 如何转换响应数据?