通过ssh远程获取脚本

时间:2014-09-16 14:02:10

标签: bash ssh

我想通过ssh运行一个需要特定环境的远程程序。因此,在执行程序之前,我获取构建环境的特定文件。如果我直接登录到机器,这不是问题,但是当我通过ssh执行命令时

#!/bin/bash
foo=`ssh user@host "source ~/script.sh; ~/run/program"`

我收到错误消息,表明脚本未正确获取。你知道我要做什么才能获得脚本来源和程序在同一个会话中执行吗?

编辑: 我正在使用脚本导出LD_LIBRARY_PATH,并且可执行文件抱怨它无法找到共享对象文件。默认的shell是bash。 '会话'是决定性的,而不是正确的措辞。我的意思是'终端环境'。

2 个答案:

答案 0 :(得分:1)

这可能不是最干净的方法,但是如果使用交互式选项(-i)调用bash并通过标准输入发送命令,它应该可以工作。

特别是

foo=`ssh user@host bash -i <<EOF
source ~/script.sh
~/run/program
EOF`

如果您的脚本program_in_env.sh完全符合您想要的两个步骤,那将会容易得多:

#!/bin/bash
source ~/script.sh
~/run/program

然后你只需要拨打ssh user@host program_in_env.sh

祝你好运。

答案 1 :(得分:0)

感谢您的所有时间和帮助。我发现了这个问题。从一开始就是如何执行远程程序的基本思想。在机器上本地测试我的案例时,当前的工作目录是不同的。出于某种原因,在获取此bash脚本时,cwd非常重要。