Jenkins 执行 shell scp

Jenkins 执行 shell scp

我有一个 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提供密码。最后一种可能性是脚本,它可以与交互式提示进行交互。sshscpexpect

答案2

请尝试 publishoverssh 插件。请查看以下链接以供参考: https://plugins.jenkins.io/publish-over-ssh/

相关内容