Perlを用いた自動FTP転送:UNIX処方箋
現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、Perlの「Net::FTP」モジュールを使用した、FTP転送の自動化について解説します。
Solaris 9がインストールされているマシンにおいて、FTPを用い手動で特定ファイルのアップロードおよびダウンロードを行っています。これらの作業を自動で行うように設定したいのですが、何か良い方法はないでしょうか?
Perlの「Net::FTP」モジュールを使用すると、FTPを用いたファイルの自動アップロードおよびダウンロードを行えます。
「Net::FTPモジュール」のインストール
まず、「Net::FTP」モジュールのインストール状況の確認を次のように行います。
# perl -e "use Net::FTP;"
インストールされている場合とインストールされていない場合の出力の違いは以下のとおりです。
- インストールされている場合
# perl -e "use Net::FTP;"
#
↑メッセージなどは出力されない。プロンプトが表示される
- インストールされていない場合
# perl -e "use Net::FTP;"
Can't locate Net/FTP.pm in ……
(以下、エラーメッセージが出力される)
「Net::FTP」モジュールのダウンロード
インストールされていない場合、「Net::FTP」モジュールを入手し、次のようにインストールします。
# gunzip libnet-1.19.tar.gz
# tar xvf libnet-1.19.tar
# cd ./libnet-1.19
# perl Makefile.PL
# make
# make test
# make install
FTP転送設定ファイルの作成
モジュールのインストール完了後、自動でFTP転送を行うための設定ファイルftp.plを作成します(リスト5)。設定ファイルでputコマンドではなくgetコマンドを指定すると、ファイルのダウンロードを行えます。設定ファイルの詳細な説明は、こちらを参照してください。
#!/bin/perl
use Net::FTP; ←perlを使用しFTPを行うことの定義
$ftp = Net::FTP -> new("*.*.*.*"); ←FTPにて任意のIPアドレス(ここでは*.*.*.*)
のマシンに接続
$ftp -> login("user","pass"); ←ユーザー名user、パスワードpassにてログイン
$ftp -> ascii; ←ASCIIモードへ変更
$ftp -> cwd ("/tmp"); ←/tmpディレクトリへ移動
$ftp -> put ("/data/test"); ←/data/testファイルをアップロード
$ftp -> quit; ←FTPを終了
exit(0);
ftp.plを実行するには、次のようにします。
# /bin/perl /export/home/ftp.pl
FTP転送設定ファイルの自動実行
crontabを利用し、設定ファイルの内容が毎日自動実行されるように設定します。「crontab -e」コマンドを実行し、/var/spool/cron/crontabs/rootファイルに次の内容を追記します。
1 0 * * * /bin/perl /export/home/ftp.pl
ここでは、/export/home/ftp.plファイルを毎日0時1分に実行するよう設定しています。以上、FTPを用いたファイルの自動転送の設定は完了となります。
関連記事
- NISマスターサーバ情報へのアクセス制限
- 重要データを任意のHDDへ定期的にバックアップ
- ログファイルのローテーション
- SUIDとは
- シェルスクリプトによる特定ファイルのバックアップ
- 9個以上のディスクスライス作成
- bashが起動時に実行するファイル
- acctcomコマンドによる終了ステータスの確認
- 電源制御キーの役割と無効化
- 「load average」によるCPU負荷の確認
- FTP利用でのファイル/ディレクトリの属性変更
- UFS loggingによるエラーと復旧方法
- ALOMにおけるSC用ユーザーの確認とパスワード変更
- PostgreSQLのテーブルデータをファイルへコピーする方法
- sotrussやapptraceによる実行コマンドのトレース
- TCP遅延肯定応答タイマーのタイムアウト値の変更
- 複数のマシンで効率的にシャットダウンする方法
- WWW::MechanizeモジュールによるWebアクセスの自動化
- IPv6アドレスの自動生成による不具合解消法
- キャッシュファイルを利用したNFSマウント
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.