我正在编写一个脚本,尝试将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'是否可以使用远程变量?
谢谢!
答案 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