Использование pscp с переменными удаленной среды

435
jamiet

Я использую 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команде?

3

1 ответ на вопрос

4
Steven

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

Здорово спасибо На самом деле я использую PowerShell, но уверен, что смогу его адаптировать. Очень признателен. jamiet 7 лет назад 0

Похожие вопросы