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)
看来Jenkins不支持交互式命令模型。
尝试使用sshpass工具以非交互方式传递密码。
$ sshpass -p "password" {your command}
Run Code Online (Sandbox Code Playgroud)