linux - 从 Jenkins 执行时,期望实用程序不起作用

标签 linux jenkins hudson solaris expect

我们有一个 unix 脚本,它使用 expect 实用程序进行交互式执行。当我们从 unix 服务器运行时,这个脚本运行良好。

如果我们从 Jenkins 运行这个脚本,它是行不通的。

下面是脚本

var="xxxxx"
expect -c "
    spawn sudo cp /abcd/sjws/config/obj.conf /abcd/sjws/config/obj.conf_jenkins
    expect {
    "Password:" { send $var\r;interact }
    }
    exit
    "

下面是我们从 jenkins 运行时的输出

spawn sudo cp /abcd/sjws/config/obj.conf /abcd/sjws/config/obj.conf_jenkins 
Password: 
Password:
Build step 'Execute shell' marked build as failure 
Finished: FAILURE

最佳答案

由于 Jenkins 不从实际终端运行它,interact 不起作用,因为那里实际上不可能有任何用户交互。

您可以将 interact 替换为

expect eof
wait

关于linux - 从 Jenkins 执行时,期望实用程序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16914342/

相关文章:

linux - sed 命令如何与多个组一起使用

linux - 将标题添加到列表文本文件 awk 中的列

linux - 如何使用初始化函数?

linux - 我在哪里可以获得 Windows `--shared` 命令的 `git init` 选项的描述?

jenkins - 是否可以通过在实际脚本而不是作业配置中列出参数来在Jenkins中创建参数化脚本管道

jenkins - Jenkins 在 devops 管道中的位置如何?

jenkins - 如何配置 docker 以限制启动容器的端口范围

jenkins - 错误-Jenkins检测到正在运行多个实例

java - 是否可以在 Hudson 中禁用 "People" View ?

java - 错误 - trustAnchors 参数必须非空