2012-03-05 75 views
1

我正在尝试通过参数或为远程执行的bash脚本设置变量。部分问题在于,我在进入ssh的服务器在连接之后做了一个chroot。我发现执行脚本的唯一方式如下所示:将参数传递给bash脚本,该脚本通过重定向到bash运行

ssh [email protected] 'bash -ex' < /tmp/script 

我在该脚本中需要一个变量。不管它是一个arg还是一个以某种方式传递给bash的环境变量都没关系。我能想到的解决这个问题的唯一办法就是通过做一样的东西:

sed -e s/VAR/VAR=dog/g /tmp/script > /tmp/replaced 
ssh [email protected] 'bash -ex' < /tmp/replaced 

我认为这是显而易见的,为什么我不喜欢这样的解决方案。有可能做我想做的事吗?

回答

2

如果您正确配置SendEnv(客户端)和AcceptEnv(服务器),您可以让ssh为您发送变量。

VAR=dog ssh [email protected] 'bash -ex' < /tmp/replaced 
+0

我似乎无法得到那个工作。我已经将东西剥离到基本的ssh服务器var = dog。它记录我,运行我的bashrc文件并将我踢出去。我错过了什么?我能想到的唯一的事情是OpenSSH 3.4和5.1 – JeffCharter 2012-03-06 22:31:09

+0

不幸的是,我的一台机器在旧版本的ssh上不支持AccpectEnv。我无法在该盒子上升级ssh。无论如何感谢您的帮助。我不知道SendEnv存在。 – JeffCharter 2012-03-09 02:03:01