Net::FTPを使ってごにょごにょする

自分のパソコンでのapacheの設定がうまくいかず、chalowの検索ができないという事態が長らく続いていました、実は。しかし、これでは意味がないじゃんということで解決策を探す。apacheの勉強するとかいうのはだるいので今回はパスw。

いろいろ考えていたら、某所のサーバーにあげといて、認証かけとくかという案にたどり着きました。この辺参考しながら、Basic認証をかける。

というわけでできるようになったんだけど、いちいちFTPのクライアント立ち上げて、ファイルを転送するのが面倒だということに気がつく。面倒なことは続きません。

ということで、Perlでchalow関係のファイルをまとめてディレクトリにぶちこむプログラムを書いた。といってもどっからか借りてきたやつがほとんどですが。カレントディレクトリとかも作りそうになって、エラーだよって言われるけどまあいいや(おい

更新されたファイルだけあげるようにするとかすればいいのかもしれないけど、今のところそんなにファイルがあるわけでもないからいいや。増えてから考えることにする。

use Net::FTP;

my $host = 'host';
my $user = 'user';
my $pass = 'pass';
my $local_dir='/local/dir/';
my $remote_dir = '/remote/dir/';

my $ftp = Net::FTP->new($host) or die "can not connection: $!";
$ftp->login($user, $pass) or die $ftp->message;
$ftp->binary;
opendir(DIR,$local_dir) or die "$local_dir: $!";
my @files=readdir(DIR);
foreach(@files){
    print $local_dir,"/",$_,"\n";
    $ftp->put(($local_dir."/".$_), ($remote_dir."/".$_)) or warn $ftp->message;
}

$ftp->quit;

リモートのディレクトリにあるファイルを取得して、片っ端からputで転送しています。あとはこれを.zshrcとかで簡単に実行できるようにしとけばいっか*1。面倒なことは自動化するに限ります。

*1:cronはまだ触ったことがない。