[perl]自動 FTP アップロード

概要

FTP サーバーより、ファイルをダウンロードし、内容を少し変更して、アップロードします。
某フリーのウェブサーバーって、暫く更新無いと、アカウント削除されるじゃ無いですか。
サイトは別にどうでも良いんですけど、メールアドレスをメインで使用しているものですから・・・。
って言うか、そこのサーバーのメールアドレス使えなくなったんで、今さらどうでも良いのですが。

良い子のお約束

このページに書かれている事を実行して、何が起こっても私は知りません。
まぁ、このページに到達された方なら大丈夫でしょうけど(^o^)。

環境とか

使い方

スクリプト re997001.cgi を適当に起動して下さい。
タスク登録するとか、crontab 登録とか。

和ジオの場合は、文字コードを EUC で統一しとかないと、まずいかもです。

スクリプトのソース

[re997001.cgi:ここから]======================================================================
#!/usr/local/bin/perl

#   re997 和ジオトップページ自動更新

#   crontab により起動
#   和ジオに ftp ログインして、index.html を get
#   index.html の日付テキストを変更
#   index.html を put

    use strict;
    use Net::FTP;

    # 接続設定とかです。
    my $R_settings ={};
    $R_settings->{server}   = "ftp.geocities.co.jp";
    $R_settings->{user}     = "user";
    $R_settings->{pass}     = "pass";
    $R_settings->{target}   = "index.html";
    $R_settings->{resource} = "index.html";
    my $C_line_check    = "<!-- add on -->";
    my $FTP;

    my @Day_text = ('日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日');

#   和ジオに ftp ログインして、index.html を get
    &FTP_get_file;
#   index.html の日付テキストを変更
    &change_resource;
#   index.html を put
    &FTP_put_file;
exit;

#=============================================================================================================>
sub FTP_get_file {  #   和ジオに ftp ログインして、index.html を get

    $FTP = Net::FTP->new($R_settings->{server}) or die "Can't connect $@";
    $FTP->login($R_settings->{user},$R_settings->{pass}) or die "Can't login $@";
    $FTP->get($R_settings->{target}) or die "Can't get $@";

}   #   和ジオに ftp ログインして、index.html を get
#=============================================================================================================>
sub change_resource {   #   index.html の日付テキストを変更

    #   <!-- add on --><HR color="#0000ff"><p>今日は金曜日です。</p>

    # テキスト部分を編集
    # 日時を取得
    $ENV{'TZ'}  = "JST-9";
    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
    $year -= 100; ++$mon;
    my $P_text = sprintf("%02d/%02d/%02d『%s』",$year,$mon,$mday,$Day_text[$wday]);
    $P_text = '<HR color="#0000ff"><p>' . $P_text . '<p>';

    open(OUT, "+< $R_settings->{resource}");
    flock(OUT, 2);
    my @lines = <OUT>;
    truncate(OUT, 0);
    seek(OUT, 0, 0);

    foreach my $line(@lines) {
        #編集後テキスト挿入
        if ($line =~/^$C_line_check/) {
            $line = $C_line_check . $P_text . "\n";
            last;
        }
    }

    print OUT @lines;
    close(OUT);

}   #   index.html の日付テキストを変更
#=============================================================================================================>
sub FTP_put_file {  #   index.html を put

    $FTP->put($R_settings->{resource}) or die "Can't put $@";
    $FTP->quit() or warn "Can't put $@";

}   #   index.html を put
#=============================================================================================================>
[re997001.cgi:ここまで]======================================================================