Использование 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
,