当店のサイトでも無料の会員登録をしていただいた方々には、ポイントの付与や発送履歴の提示などをしています。同一世帯の人への対応や、住所変更などへのきめ細かい対応のため、自動登録ではなく個別に手作業での対応となっており、データの修正はやむないとしても、サーバーとのやり取り作業回数が多く、なんとか省力化ができないか検討していました。
サーバーにファイルを上げるのに使っている ftp ソフトは ffftp で、これには同期をとる機能があるのですが、個別のファイルのみではなくフォルダー全体となると無駄です。別のソフト、WinSCP ではスクリプトがあるとのことで試してみたのですが、私の技能ではうまく機能しません。やむなく昔取った杵柄、Perl を引っ張り出します。
ありがたいことにネットには情報がたくさんあり(たとえばこちら(※1))、NET::FTP というプラグインで実に簡単にできるではありませんか。
というわけで作った(というか丸写しの) Perl プログラムは
use strict;
use warnings;
use Net::FTP;
my $host =’hostname or IPadress’;
my $user =’username’;
my $pw =’password’;
my $file1 =’Upfile1′;
my $file2 =’Upfile2′;
my $file3 =’Upfile3′;
my $path =’ServerFolder’;
my $ftp = Net::FTP->new($host, Debug => 1)
or die “Could not connect to ‘$host’: $@”;
$ftp->login($user, $pw)
or die sprintf “Could not login: %s”, $ftp->message;
$ftp->cwd($path)
or die sprintf “Could not login: %s”, $ftp->message;
$ftp->binary;
$ftp->put($file1)
or die die sprintf “Could not login: %s”, $ftp->message;
$ftp->put($file2)
or die die sprintf “Could not login: %s”, $ftp->message;
$ftp->put($file3)
or die die sprintf “Could not login: %s”, $ftp->message;
$ftp->quit;
です。
これでサーバーとのやり取りも ftp プログラムを起動することも無く一発で完了です。
これからの子供達は早くからプログラムに接しますので、私の様に無駄な時間を使うこともなく、効率もグンと上がることでしょう。
(※1) https://tutorial.perlzemi.com/blog/20091115124667.html