期望从jenkins执行时,实用程序不起作用

Kis*_*ire 7 linux solaris hudson expect jenkins

我们有一个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
    "
Run Code Online (Sandbox Code Playgroud)

以下是我们从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
Run Code Online (Sandbox Code Playgroud)

Yam*_*vic 10

由于Jenkins不从实际终端运行它,因此interact无法正常工作,因为那里实际上不存在任何用户交互.

您可以替换interact使用

expect eof
wait
Run Code Online (Sandbox Code Playgroud)


R.L*_*Liu 0

看来Jenkins不支持交互式命令模型。

尝试使用sshpass工具以非交互方式传递密码。

安装 sshpass

$ sshpass -p "password" {your command}
Run Code Online (Sandbox Code Playgroud)