在远程的ssh命令中传递variables

我希望能够使用ssh从我的机器运行命令,并通过环境variables$ BUILD_NUMBER

这就是我想要的:

ssh pvt@192.168.1.133 '~/tools/myScript.pl $BUILD_NUMBER' 

在进行ssh调用的机器上设置$ BUILD_NUMBER,由于该variables在远程主机上不存在,因此不会被拾取。

如何传递$ BUILD_NUMBER的值?

4 Solutions collect form web for “在远程的ssh命令中传递variables”

如果你使用

 ssh pvt@192.168.1.133 "~/tools/run_pvt.pl $BUILD_NUMBER" 

代替

 ssh pvt@192.168.1.133 '~/tools/run_pvt.pl $BUILD_NUMBER' 

在将命令string发送到远程主机之前,您的shell将插入$BUILD_NUMBER

不会评估单引号中的variables。 使用双引号:

 ssh pvt@192.168.1.133 "~/tools/run_pvt.pl $BUILD_NUMBER" 

shell将用双引号扩展variables,但不能用单引号。 在传递给ssh命令之前,这将变成你想要的string。

如前所述,您不需要在远程主机上设置环境variables。 相反,您可以简单地在本地主机上进行元扩展,然后将值传递给远程主机。

 ssh pvt@192.168.1.133 '~/tools/run_pvt.pl $BUILD_NUMBER' 

如果你真的想在远程主机上设置环境variables并使用它,你可以使用env程序

 ssh pvt@192.168.1.133 "env BUILD_NUMBER=$BUILD_NUMBER ~/tools/run_pvt.pl \$BUILD_NUMBER" 

在这种情况下,这有点矫枉过正,注意

  • env BUILD_NUMBER=$BUILD_NUMBER在本地主机上进行元扩展
  • 远程BUILD_NUMBER环境variables将被使用
    远程shell

转义variables以访问ssh会话之外的variables:ssh pvt@192.168.1.133“〜/ tools / myScript.pl \ $ BUILD_NUMBER”

  • 让ssh在目标机器的后台执行一个命令
  • 将密钥对添加到现有的EC2实例
  • Git在PowerShell中说'找不到ssh-agent'
  • 通过SSH传输文件
  • 如何删除SSH密钥的密码而不必创build新密钥?
  • 如何在python中scp?
  • 如何在没有实际运行“stream浪ssh”的情况下sshstream浪?
  • stream浪者卡住连接超时重试
  • 使用期望将密码传递给ssh
  • 我如何find我的RSA密钥指纹?
  • GIT和SSH,使用哪个密钥?