Usando o pscp com variáveis de ambiente remoto

3

Estou usando o pscp.exe para transferir arquivos do Windows para o Linux. Este comando funciona bem:

pscp myfile.txt user@host:/airflow/dags

O local no host Linux no qual eu quero transferir os arquivos é armazenado em uma variável de ambiente:

$ echo $AIRFLOW_HOME
/airflow

Gostaria de me referir a essa variável de ambiente na chamada para pscp . Infelizmente não funciona:

pscp myfile.txt user@host:$AIRFLOW_HOME/dags

retorna pscp: unable to open /dags: permission denied (o que faz sentido, é claro, /dags não existe).

É evidente que a parte $AIRFLOW_DAGS do comando não está sendo resolvida no host. Então, existe uma maneira de se referir a variáveis de ambiente no host no meu comando pscp ?

    
por jamiet 26.04.2017 / 16:54

1 resposta

4

O utilitário pscp não pode resolver variáveis de shell remotas. Como solução alternativa, recupere o valor de uma variável primeiro sobre ssh (usando o comando PuTTY plink ) e armazene-a em uma variável do Windows.

Coloque os seguintes comandos em um arquivo de lote e execute-o.

@echo off 
for /f %%i in ('plink -ssh user@host echo $AIRFLOW_HOME') do set HOMEVAR=%%i
pscp myfile.txt user@host:%HOMEVAR%/dags

Nota: Para usar o comando for /f... na linha de comando (fora de um arquivo de lote), substitua %%i por %i .

    
por 26.04.2017 / 17:40