前のページ|次のページ

FILENAMEステートメント、SFTPアクセス方式

SFTPプロトコルを使用してリモートファイルにアクセスできます。

該当要素: 任意の場所
カテゴリ: データアクセス

構文

引数

fileref

有効なファイル参照名を指定します。

ヒント ファイル参照名と外部ファイルの関連付けは、SASセッション終了まで維持されるか、または他のFILENAMEステートメントで関連付けの変更や関連付けの取り消しを実行するまで維持されます。ファイルに対するファイル参照名は必要に応じて何度でも変更できます。

SFTP

このアクセス方式を指定すると、SFTP(Secure File Transfer Protocol)を使用したファイルの読み込みや書き込みを、OpenSSH SSHDサーバーが稼働しているネットワーク上のホストコンピュータとの間で実行できるようになります。

'external-file'

読み込みまたは書き込みの対象となる外部ファイルの物理名を指定します。物理名には動作環境で判別できる名前を指定します。

動作環境 外部ファイルの物理名を指定する方法の詳細については、各動作環境向けのSASドキュメントを参照してください。
ヒント ファイルの転送を実行するのではなく、ディレクトリリストの取得などのタスクを実行する場合は、外部ファイル名を指定する必要はありません。ファイル名のかわりに、引用符のみをステートメントに指定してください。
ファイル参照名には、1つのファイルまたは集約記憶域を関連付けることができます。

sftp-options

ファイル属性や属性の処理など動作環境固有の詳細情報を指定します。

動作環境 SFTPオプションの詳細については、各動作環境向けのSASドキュメントを参照してください。
参照項目 SFTPオプション

SFTPオプション

sftp-optionsには、次の値のいずれかを指定できます。

BATCHFILE='path'

SFTPコマンドを含むバッチファイルの絶対パスとファイル名を指定します。これらのコマンドはSFTPアクセス方式の実行時にサブミットされます。バッチファイルの処理が終了すると、SFTP接続は終了します。

要件 指定するパスは一重引用符で囲む必要があります。
ヒント バッチファイルの処理が終了すると、SFTP接続が終了するため、ファイル名の割り当てが利用できなくなります。後続のDATAステップの処理でFILENAME SFTPステートメントが必要になる場合は、FILENAME SFTPステートメントを再度指定する必要があります。
バッチファイルを使用する

CD='directory'

作業ディレクトリを変更するコマンドを発行します。この作業ディレクトリでは、指定したdirectoryへのファイルの転送を実行します。

DEBUG

情報メッセージをSASログに書き込みます。

DIR

ディレクトリファイルにアクセスできるようにします。external-file引数にディレクトリ名を指定してください。指定したホストに対して有効なディレクトリ構文を使用する必要があります。

操作 CDオプションとDIRオプションは相互に排他的です。両方を指定すると、SFTPアクセス方式ではCDオプションが無視されます。また、情報メッセージがログに書き込まれます。
ヒント SFTPを使用してディレクトリを作成する場合、DIRオプションとNEWオプションを組み合わせて使用します。ディレクトリがすでに存在する場合、NEWオプションは無視されます。
NEWオプションを使用せずに無効なディレクトリを指定すると、新しいディレクトリは作成されず、エラーメッセージが表示されます。

HOST='host'

このhostには、OpenSSH SSHDサーバーが稼働しているリモートホストのネットワーク名を指定します。

ホスト名(例:server.pc.mydomain.com)またはコンピュータのIPアドレス(例:2001:db8::)のどちらかを指定できます。

LRECL=lrecl

このlreclには、データの論理レコード長を指定します。

デフォルト 256
操作 かわりに、XisError: No pubcode in link data found for lesysoptsrefを使用すると、グローバルな論理レコード長を指定できます。SAS 9.4では、グローバルLRECLシステムオプションのデフォルト値は32767です。固定長レコード(RECFM=F)を使用する場合、LRECLのデフォルト値は256になります。

LS

SFTPサーバーにLSコマンドを発行します。LSオプションを指定すると、作業ディレクトリの内容がファイル属性を持たないレコードとして返されます。

制限事項 LSオプションでは、.xAuthorityなどのファイルの先頭にあるピリオドは表示されません。
操作 LSオプションとLSAオプションは相互に排他的です。両方のオプションを指定すると、LSAオプションが優先されます。
ヒント ファイルのサブセットのリストを返すには、LSオプションの他にLSFILE=オプションを使用します。

LSA

SFTPサーバーにLSコマンドを発行します。LSAオプションを指定すると、作業ディレクトリのすべての内容がファイル属性を持たないレコードとして返されます。

操作 LSオプションとLSAオプションは相互に排他的です。両方のオプションを指定すると、LSAオプションが優先されます。
.xAuthorityなどの先頭のピリオドを使用せずにファイルを表示するには、LS=オプションを使用します。
ヒント ファイルのサブセットのリストを返すには、LSAオプションの他にLSFILE=オプションを使用します。

LSFILE='character-string'

LSオプションと組み合わせて使用します。作業ディレクトリからファイルのサブセットのリストを要求するために使用する文字列を指定します。文字列は一重引用符で囲みます。

制限事項 LSFILE=オプションは、LSまたはLSAオプションが指定されている場合にのみ使用できます。
ヒント 'character-string 'の一部にワイルドカードを指定できます。
次のステートメントでは、 salesで始まり、 sasで終了するすべてのファイルをリストします。
filename myfile sftp '' ls lsfile='sales*.sas' 
   other-sftp-options;

MGET

SFTPコマンドのMGETと同じように複数のファイルを転送します。

ヒント 転送処理全体が1つのファイルとして処理されます。ただし、新しいファイルの転送を開始するときに、EOV=変数が1に設定されます。

NEW

DIRオプションの使用時に、SFTPでディレクトリを作成するように指定します。

制限事項 z/OSでは、NEWオプションは使用できません。
ヒント ディレクトリがすでに存在する場合、NEWオプションは無視されます。

OPTIONS='option-string'

ポート番号や詳細などのSFTP構成オプションを指定します。

要件 FILENAME SFTPステートメントを含むコードを、Windowsワークスペースサーバーで実行されているSAS Enterprise Guideからサブミットする場合、OPTIONSまたはOPTIONSXオプションを使用して認証を指定する必要があります。
OPTIONS文字列の情報を隠す必要がある場合は、OPTIONSXオプションを使用します。
参照項目 SAS Enterprise GuideでOPTIONSXパラメータに指定した認証を使用してWindows PUTTYクライアントとSSHDサーバーを接続する

OPTIONSX='option-string'

秘密鍵やパスフレーズなどのSFTP構成オプションを指定します。option-stringの情報はすべて、SASログへの書き込み時に隠されます。

要件 FILENAME SFTPステートメントを含むコードを、Windowsワークスペースサーバーで実行されているSAS Enterprise Guideからサブミットする場合、OPTIONSまたはOPTIONSXオプションを使用して認証を指定する必要があります。
OPTIONSX文字列のパスフレーズに1つ以上のスペースが含まれる場合、そのパスフレーズを二重引用符で囲む必要があります。また、OPTIONSX文字列は一重引用符で囲む必要があります。
ヒント パスフレーズは-pwパラメータを使用して渡されます。
参照項目 SAS Enterprise GuideでOPTIONSXパラメータに指定した認証を使用してWindows PUTTYクライアントとSSHDサーバーを接続する

PATH

PATHまたは$PATHなどの検索パスにインストールされていない場合、SFTP実行可能ファイルの場所を指定します。

ヒント PATHまたは$PATHの検索パスからアクセス可能なディレクトリに、OpenSSHの “SFTP”実行可能ファイルまたはPUTTYの“PSFTP”実行可能ファイルをインストールすることをお勧めします。

RECFM=recfm

このrecfmには、次の2つのレコード形式のどちらかを指定します。

F

固定長レコード形式です。そのため、LRECLサイズのすべてのレコードには区切り文字となる改行が含まれていません。

操作 SAS 9.4では、グローバルLRECLシステムオプションのデフォルト値は32767です。固定長レコード(RECFM=F)を使用している場合、LRECLのデフォルト値は256になります。

S

ストリームレコード形式です。データはイメージ(バイナリ)モードで転送されます。

操作 読み込むデータ量は、現在のLRECLの値またはINFILEステートメントに指定したNBYTE=変数の値で制御されます。NBYTE=オプションには、読み込まれるデータ量に等しくなる変数を指定します。このデータ量は、LRECLに指定した値に等しいか、それ以下の値にする必要があります。
参照項目 INFILEステートメントのNBYTE=オプション

V

可変長レコード形式(デフォルト設定)です。この形式ではレコードの長さが異なります。また、レコードは改行で区切られます。データはイメージ(バイナリ)モードで転送されます。

デフォルト V

USER='username'

ユーザー名を指定します。

要件 Windowsホスト上のPUTTYクライアントでは、usernameを指定する必要があります。
ヒント 公開鍵認証方式を使用する場合、LINUXまたはUNIXのホスト上ではusernameを指定する必要はありません。
リモートのSSHDサーバーに接続する場合、SSHエージェントを使用する公開鍵認証方式を使用することをお勧めします。

WAIT_MILLISECONDS=milliseconds

SFTPの応答時間をミリ秒で指定します。

デフォルト 1,500ミリ秒
ヒント タイムアウトメッセージがログに出力される場合は、WAIT_MILLISECONDSオプションを使用して応答時間を長く設定します。

詳細

基本

SFTP(Secure File Transfer Protocol)は、ネットワーク上にある2つのホスト(クライアントとサーバー)間に対して保護された接続とファイル転送機能を提供します。2つのホスト間のコマンドやデータは暗号化されます。クライアントマシンからリモートホスト(OpenSSH SSHDサーバー)との接続を開始します。
SFTPアクセス方式を使用すると、OpenSSH SSHDサーバーが稼働しているネットワーク上のホストコンピュータとの間でデータの読み込みや書き込みを実行できるようになります。クライアントアプリケーションとサーバーアプリケーションは同じコンピュータ上に存在していても、ネットワークで接続されている別のコンピュータ上に存在していてもかまいません。
実装の詳細については、OpenSSH SSHDサーバーのバージョンや設定方法によって異なります。
SFTPアクセス方式では、OpenSSHコマンドを使用してメッセージのデフォルトの送受信を行います。OpenSSHのカスタムインストールを実行してメッセージの設定を変更すると、SFTPアクセス方式を使用できない場合があります。
SFTPアクセス方式を使用するには、適切なクライアントソフトウェアをインストールする必要があります。SFTPアクセス方式では、次のSSHクライアントのみがサポートされます。
  • OpenSSH – UNIX
  • PUTTY – Windows
注: SFTPアクセス方式ではパスワード認証はサポートされません。
注: リモートのSSHDサーバーに接続する場合、SSHエージェントを使用する公開鍵認証方式を使用することをお勧めします。
注: SFTPアクセス方式の実行時に問題が発生する場合は、SASシステムを使用せずにSFTPクライアントからOpenSSH SSHDサーバーにアクセスできるかどうかを手動で検証してください。SASシステムを使用せずにSFTPクライアントの接続を手動で検証することにより、SSHまたはSSHDの構成や鍵認証が正しく設定されていることを確認できます。

SFTPアクセス方式とSFTPプロンプト

SFTPアクセス方式では、次のプロンプトのみがサポートされます。プロンプトを変更すると、SFTPアクセス方式を使用できない場合があります。
  • OpenSSH:
    sftp>
    sftp >
  • PUTTY:
    psftp>

比較

SFTPのgetコマンドやputコマンドと同じように、SFTPアクセス方式を使用するとファイルのアップロードやダウンロードを実行できます。ただし、この方式では最初にファイルをシステム上に保存せずに、SASセッションに直接読み込みます。

例1: SSHDサーバーの標準ポート接続

この例では、SSHDサーバーの標準ポートに接続した後、SFTPアクセス方式を使用してtest.datというファイルを読み込みます。
filename myfile sftp '/users/xxxx/test.dat' host="unixhost1";
data _null_;
   infile myfile truncover;
   input a $25.;
run;

例2: SSHDサーバーの非標準ポート接続

この例では、SSHDサーバーのポート番号4117に接続した後、SFTPアクセス方式を使用してtest.datというファイルを読み込みます。
filename myfile sftp '/users/xxxx/test.dat' host="unixhost1" options="-oPort=4117";
data _null_;
   infile myfile truncover;
   input a $25.;;
run;

例3: Windows PUTTYクライアントのSSHDサーバー接続

この例では、ユーザーIDuseridを使用してWindows PUTTYクライアントをSSHDサーバーに接続した後、SFTPアクセス方式を使用してtest.datというファイルに書き込みます。
filename outfile sftp '/users/xxxx/test.dat' host="unixhost1" user="userid";
data _null_;
   file outfile;
   do i=1 to 10;
      put i=;
   end;
run;

例4: リモートホストのディレクトリからファイルを読み込む

次の例では、リモートホスト上のディレクトリからファイルtest.dattest2.dat を読み込みます。
filename infile sftp '/users/xxxx/' host="unixhost1" dir;
data _null_;
   infile infile(test.dat) truncover;
   input a $25.;
   infile infile(test2.dat) truncover;
   input b $25.;
run;

例5: バッチファイルを使用する

次の例では、INFILEステートメントを処理するときに、FILENAME SFTPステートメントに関連付けられたバッチファイルsftpcmdsが実行されます。
filename process sftp ' ' host="unixhost1" user="userid" 
   batchfile="c:/stfpdir/sftpcmds.bat";
data _null_;
   infile process;
run;

例6: SAS Enterprise GuideでOPTIONSXパラメータに指定した認証を使用してWindows PUTTYクライアントとSSHDサーバーを接続する

この例では、Windows PUTTYクライアントからSSHDサーバーに接続した後、SFTPアクセス方式を使用してtest.datというファイルを書き込みます。公開鍵認証は、OPTIONSXパラメータに指定した秘密鍵とパスフレーズを使用して行われます。OPTIONSX文字列値は、SASログではX文字で隠されます。パスフレーズは-pwパラメータを使用して渡されます。パスフレーズにスペースが含まれる場合、そのパスフレーズを二重引用符で囲む必要があります。また、OPTIONSX文字列は一重引用符で囲む必要があります。
filename outfile sftp '/users/xxxx/test.dat' host="unixhost1" 
  optionsx='-i C:\privatekey.ppk -pw "pass phrase"'   user="userid" ;
data _null_;
   file outfile;
   do i=1 to 10;
      put i=;
   end;
run;

関連項目:

Barrett, Daniel J., Richard E. Silverman, and Robert G. Byrnes.2005.“SSH, The Secure Shell:The Definitive Guide.”Sebastopol, CA:O'Reilly
前のページ|次のページ|ページの先頭へ