我有一个 Jenkins 版本,我正尝试将 war 文件从一个 vm 复制到另一个 vm。我想使用 来执行此操作scp
。我尝试在 Jenkins 之外的 shell 中运行它,一切正常。尝试自动化它有点棘手。我需要提供密码才能使用sudo
,还需要输入我要复制到的 vm 的密码。
在 Jenkins 构建日志中,我看到执行自定义 shell 脚本后构建失败。
我在 Jenkins 构建中运行的命令是
echo 'password' | sudo -S scp -P 5555 application.war [email protected]:/JBoss/standalone/deployments
输出为
[sudo] password for jenkins: Sorry, try again.
[sudo] password for jenkins:
sudo: 1 incorrect password attempt
我没有为 Jenkins 设置任何用户,因此我不明白这个[sudo] password for jenkins
错误。
我知道有 Jenkins 插件可以实现我想要做的事情,但目前它们都无法正常工作,这可能是由于服务器配置不佳造成的。这就是为什么我想scp
在自定义 shell 脚本中使用它们。
答案1
echo 'password' | sudo -S scp ...
不,这不是一个好主意,而且也行不通,正如 SE 中多次讨论的那样。SSH 在读取密码之前会刷新输入。您应该设置 ssh 密钥。
如果密钥不是选项,还有一个称为 的工具,您可以使用它来向/sshpass
提供密码。最后一种可能性是脚本,它可以与交互式提示进行交互。ssh
scp
expect
答案2
请尝试 publishoverssh 插件。请查看以下链接以供参考: https://plugins.jenkins.io/publish-over-ssh/