有没有办法在使用 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}"