FTPを自動化するのに .netrcを使いましょう
FTPを自動化するのに .netrcを使いましょう
0.改訂履歴
1.はじめに
このドキュメントでは,RedHat Linux上で,FTPを自動実行するための手順を説明する.
FTPコマンドでは,接続する際のユーザパスワードを,たとえば,
などという方法で接続する事が出来ない. よって,バッチ処理の中でFTPを実行できないが,ここで紹介する.netrcを使う事で,あらかじめ指定されたユーザ&パスワードを指定して実現できるようになる.
2..netrcを作成する
- FTPを実行したいOSのユーザアカウントのホームディレクトリに,.netrcというファイルを作成する.
- ファイルの中身を見ると,次の通りである.
bash$ cat .netrc
machine 172.1.2.3
login sybase
password sybasepassword
bash$
|
- では,このファイルがある状態で,該当のFTPサーバに接続してみる.
bash-2.05$ ftp 172.1.2.3
Connected to 172.1.2.3 (172.1.2.3).
220 poweredge FTP server (Version wu-2.6.0(1) Mon Feb 28 10:30:36 EST
2000) ready.
Error - .netrc file not correct permissions.
Remove password or correct mode (should be 600).
ftp> quit
|
- 残念ながら,エラーが発生して自動ログインできなかった.
- この原因は,メッセージにもあるとおり,.netrcのパーミッションがいい加減なので,セキュリティ的に問題があるという警告である.
3..netrcのパーミッションを設定する
- では,.netrcのパーミッションを確認してみる.
bash-2.05$ ls -la .netrc
-rw-r--r-- 1 sybase ASE 51 Aug 27 15:10 .netrc
bash-2.05$
|
- これでは,どのユーザでもリード出来るようになっている.
- つまり,誰でもパスワードが分かっちゃう.
- これではまずいので,ユーザ以外の参照権限を削除する.
bash-2.05$ chmod og-r .netrc
bash-2.05$ ls -la .netrc
-rw------- 1 sybase ASE 51 Aug 27 15:10 .netrc
bash-2.05$
|
- 普通の人は,chmod 600とするんだろうけど,ここでは(o)wner,(g)roupの権限からRead権限を削除(-)している.
4.再度接続
- .netrcファイルの権限を変更後,再度接続してみる.
bash-2.05$ ftp 172.1.2.3
Connected to 172.1.2.3 (172.1.2.3).
220 poweredge FTP server (Version wu-2.6.0(1) Mon Feb 28 10:30:36 EST
2000) ready.
331 Password required for sybase.
230-Please read the file README
230- it was last modified on Wed Jan 5 04:37:44 2000 - 964 days ago
230 User sybase logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221-You have transferred 0 bytes in 0 files.
221-Total traffic for this session was 340 bytes in 0 transfers.
221-Thank you for using the FTP service on i0-sybase.
221 Goodbye.
bash-2.05$
|
5.バッチ処理で使うために
- このように設定した後,FTPをバッチで実行するには,次のような手順となる.
- FTPコマンドを記述したファイルを作成する.
bash-2.05$ cat ftpcommand.txt
bin
get getfile.exe
quit
bash-2.05$
|
- 作成したファイルをリダイレクトして,FTPを実行する.
bash-2.05$ /usr/bin/ftp 172.1.2.3 < ftpcommand.txt
bash-2.05$
|