使用 pscp 与远程环境变量

使用 pscp 与远程环境变量

我用它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

相关内容