【问题标题】:Pass parameter to shel script in remote machine via jenkins通过詹金斯将参数传递给远程机器中的shell脚本
【发布时间】:2020-06-04 09:22:27
【问题描述】:

我正在尝试将参数“USERNAME”的值传递给远程主机中的 shell 脚本。之后我试图从那个脚本访问它。 Jenkins 作业的 ssh 部分和脚本中,如下所示。

詹金斯工作的 SSH 部分

#!/bin/bash

ssh -tt shan@<ip-addr> '
ls -la /opt/scripts/
/opt/scripts/./name_script.sh ${USERNAME}
'

脚本

#!/bin/bash
echo $1

当我在服务器中尝试以下操作时,脚本完美运行。

./name_script.sh Shan

但是对于上面发布的场景,它不起作用。有人可以帮忙吗?

【问题讨论】:

  • 您能否尝试在您的第一个脚本中打印 USERNAME 变量。还尝试一件事,而不是单引号尝试 3 个单引号。 '''你的代码'''
  • 可以选择注入环境变量或准备运行环境。你有这些吗?
  • @pratikvasa 当我尝试打印用户名时,它工作正常。
  • @IanW 嗨,Ian,在这个脚本中,我想要做的是,我正在远程服务器中执行一个 shell 脚本。以便该脚本将在该特定主机中完成工作。
  • 把你的脚本改成echo :$1:,你可能会发现你得到了“::”。添加一行set 以查看环境变量。 ${USERNAME} 在吗?不确定它是否被设置。有趣的discussion here 或阅读手册页。你可能需要一个“;”在每一行的末尾。您可以尝试 echo $q >somefile 看看它是否只是通过 tty 将输出返回给您。

标签: linux bash shell jenkins devops


【解决方案1】:

问题是我需要添加“${USERNAME}”而不是 ${USERNAME}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多