![如何评估 SCP 中的环境远程变量?](https://linux22.com/image/1296651/%E5%A6%82%E4%BD%95%E8%AF%84%E4%BC%B0%20SCP%20%E4%B8%AD%E7%9A%84%E7%8E%AF%E5%A2%83%E8%BF%9C%E7%A8%8B%E5%8F%98%E9%87%8F%EF%BC%9F.png)
有没有办法在使用 SCP 时评估远程主机上的环境变量?
例如,假设我$FOO= /mydir
在主机 A 上有;我该如何做:
scp dogbert@hostA:$FOO/evil-secret-plans.txt .
当然,$FOO
在我的本地机器上没有定义,所以上述命令无法正常工作。
答案1
尝试一下:
scp dogbert@hostA:$(ssh dagobert@hostA "echo $FOO")/evil-secret-plans.txt .
有点开销。
答案2
添加\
:
scp dogbert@hostA:"\$FOO/evil-secret-plans.txt" .
答案3
更简单的方法是通过 stdout/stdin 使用 tar 或 gzip 发送文件。
tar -czf - ./evilsecretfile.txt | ssh user@remoteHost "cd \${varOnRemoteSystem} ; tar -xzf - ."
或者
gzip -c localFileName.txt | ssh user@remoteHost "gzip -d > /remote/path/\${varOnRemoteSystem} ; chmod 666 /remote/path\${varOnRemoteSystem}"