SCP使用远程服务器变量

时间:2014-05-21 21:54:57

标签: variables unix scp

我正在编写一个脚本,尝试将scp文件发送到远程服务器或从远程服务器读取,并希望在脚本中使用远程服务器变量,而不是将目录硬编码到脚本中,因为这将在不同的地方使用不同路径的环境。

例如,用于获取文件的硬编码版本......

scp user @ remotehost:/ userbase / filefolder / file1。

但是请说出远程主机" userbase"被设置为$ BASEHOME变量。我知道一个标准

scp user @ remotehost:$ BASEHOME / filefolder / file1。

在尝试评估发送scp的主机上的$ BASEHOME时不会工作

我环顾四周,网上建议可以使用类似以下的内容

scp user @ remotehost:$(ssh user @ remotehost" echo \ $ BASEHOME")/ filefolder / file1。

但是这个错误 - 我尝试了printf而不是echo,单引号和$ BASEHOME之前没有\但没有工作,出现类似于下面的错误(好像它没有拿起变量)

scp:/ filefolder / file1:没有这样的文件或目录

scp'是否可以使用远程变量?

谢谢!

1 个答案:

答案 0 :(得分:0)

不,不能将scp使用远程shell变量。

解决方法1:获取一次远程变量并稍后重复使用:

BASEHOME=$(ssh user@remotehost 'echo $BASEHOME')
scp user@remotehost:$BASEHOME/filefolder/file1 .

解决方法2:cat远程端的文件并重定向到本地文件:

ssh user@remotehost 'cat $BASEHOME/filefolder/file1' > file1