我有一个 Jenkins 构建,我试图将一个战争文件从一个虚拟机复制到另一个虚拟机。我想使用scp
. 我试过在 Jenkins 之外的 shell 中运行它,一切正常。尝试自动化它有点棘手。我需要提供密码才能使用sudo
,还需要为我复制到的虚拟机输入密码。
在 Jenkins 构建日志中,我看到在执行自定义 shell 脚本后构建失败。
我在 Jenkins 构建中运行的命令是
echo 'password' | sudo -S scp -P 5555 application.war user@15.15.15.15:/JBoss/standalone/deployments
Run Code Online (Sandbox Code Playgroud)
输出是
[sudo] password for jenkins: Sorry, try again.
[sudo] password for jenkins:
sudo: 1 incorrect password attempt
Run Code Online (Sandbox Code Playgroud)
我没有为 Jenkins 设置任何用户,所以我不理解[sudo] password for jenkins
错误。
我意识到有 Jenkins 插件可以实现我想要做的事情,但目前没有一个对我有用,这可能是由于服务器配置不当。这就是我想scp
在自定义 shell 脚本中使用的原因。
Run Code Online (Sandbox Code Playgroud)echo 'password' | sudo -S scp ...
不,这不是一个好主意,而且不起作用,正如围绕 SE 多次讨论的那样。SSH 在读取密码之前刷新输入。您应该设置 ssh 密钥。
如果密钥不是一个选项,还有一个名为 的工具sshpass
,您可以使用它向ssh
/提供密码scp
。最后一种可能是expect
脚本,它可以与交互式提示进行交互。
归档时间: |
|
查看次数: |
4490 次 |
最近记录: |