Использование 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 не может разрешить переменные удаленной оболочки. В качестве обходного пути, сначала извлеките значение переменной через 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,

Другие вопросы по тегам