我用它pscp.exe
来将文件从 Windows 传输到 Linux。此命令运行正常:
pscp myfile.txt user@host:/airflow/dags
我想要将文件传输到的 Linux 主机上的位置存储在环境变量中:
$ echo $AIRFLOW_HOME
/airflow
我想在调用中引用该环境变量pscp
。不幸的是,它不起作用:
pscp myfile.txt user@host:$AIRFLOW_HOME/dags
返回pscp: unable to open /dags: permission denied
(当然这是有道理的,但/dags
并不存在)。
显然,$AIRFLOW_DAGS
命令的这一部分未在主机上解析。那么,有没有办法在我的pscp
命令中引用主机上的环境变量?
答案1
该实用程序pscp
无法解析远程 shell 变量。解决方法是先通过 ssh 检索变量的值(使用 PuTTY 命令plink
),然后将其存储在 Windows 变量中。
将以下命令放入批处理文件中并运行它。
@echo off
for /f %%i in ('plink -ssh user@host echo $AIRFLOW_HOME') do set HOMEVAR=%%i
pscp myfile.txt user@host:%HOMEVAR%/dags
for /f...
注意:要从命令行(批处理文件之外)使用该命令,请将两者都替换%%i
为%i
。