3

Я использую 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 ответ1

4

Утилита 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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .