#:g1: cl-ftpの紹介

Posted 2014-06-03 13:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の154日目です。

cl-ftpとはなにか

 cl-ftpは、Common Lispからftpを利用するためのライブラリです。

パッケージ情報

パッケージ名cl-ftp
Quicklisp
CLiKihttp://cliki.net/cl-ftp
Quickdocshttp://quickdocs.org/cl-ftp
CL Test Grid: ビルド状況cl-ftp | CL Test Grid

インストール方法

(ql:quickload :ftp)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 使い方はシンプルで、with-ftp-connectionでコマンドを実行します

(ftp.client:with-ftp-connection (conn :hostname "ftp.example.com"
                                      :password "password"
                                      :username "user"
                                      :passive-ftp-p t)
  (ftp:send-nlst-command conn t))
;>>  .
;>>  ..
;>>  index.html
;>>  
;=>  T

 古いOS(TOPS-20)につなごうとしたらどうも上手く行かなかったのでRFCを眺めてみましたが、あまり耳にしたことがないコマンドがRFCに載っていたので、試しに実装して通信を試してみます。

(ftp::def-simple-command syst (conn)
  (ftp::send-raw-line conn "SYST")
  (ftp::data-to-string (ftp::expect-code-or-lose conn 215)))
(ftp.client:with-ftp-connection (conn :hostname "example.org"
                                      :password "password"
                                      :username "user"
                                      :passive-ftp-p t)
  (send-syst-command conn))
;=>  "TOPS20
;    "

TOPS-20とも通信できました。RFC959によれば、SYSTは、サーバーのオペレーティングシステムの種類を調べるために使うそうです。

まとめ

 今回は、cl-ftpを紹介してみました。
最近FTPは使う機会も減ってきましたが、自動化したい場合には便利そうですね。

comments powered by Disqus