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
コマンドでホスト上の環境変数を参照する方法はありますか?
ユーティリティ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
に置き換えます。