天使と悪魔選手権

よろしくお願いします。

Cygwinで FTPを使ってUnixのFileを取得するシェルスクリプトを作成しました。
シェルの種類はkshです。

このTOOLをCygwinのcronに仕掛けて自動的にFileを取得するようにしたいのですが、
どうもFTPのところで止まってしまうようです。
Cron設置時にLogを取得したところ
下記のメッセージが出力されていました。

  User (10.200.xx.xx(none))

自分のhomeに.netrc ファイルを作成して、FTP時にはUserID/Passwordを入力しなくて済むようにしているので
スクリプトを自分で実行する分には何も入力しなくて言いのですが
cron実行時にはなぜかUserIDの入力を促すところでストップし、プロセスも残ってしまっています。

自動的にUserID/Pawwwordを読み込ませるにはどうしたらよろしいでしょうか?

A 回答 (1件)

 う~んもう少し「このプログラム、誰が実行してる?」ってのを意識してスクリプト書くようにしたら良いだろうね。

Q&A方式でお届けします。

Q.cygwinのcronって誰が実行しているの?
A.特に設定をいじっていない場合、Windowsの「LocalSystemアカウント」で動作しています。cronから起動されるプログラムも同じです。

Q.cronで実行したプログラムが、私のホームディレクトリを見にいかない。
A.cronはLocalSystemアカウントが実行するので、あなたとは「違うユーザ」になります。なので、他人(=あなた)のホームを見に行くような事はしません。

以上の事から、cronで自動実行するftpコマンドは別個に設定が必要です。
cygwinのftpコマンドは
$ ftp -s:filename
で、filenameに入力する内容を書くとユーザに関わらず自動実行できそうだ。内容は以下のような風にして試してみると良いでしょう。

--------begin of filename--------
open hostname.tld
anmochi
anmochi@hostname.tld
ls
quit
--------end of filename--------

本当はもっと高度で便利な方法が色々あるんじゃけど、とりあえずこの方法を試してみてはどうかな。
    • good
    • 0
この回答へのお礼

anmochiさま、どうもありがとうございます。

教えていただいた様にFTP用のCommandFileを作成して
FTPコマンドに与えたところ、無事に動作しました!

Kshでの記述でしたので
 ftp -s:filename
ではなく
 cat filename | ftp -n
という記述になりました。
 
UnixだとcronがHome配下にある.netrcを読み込んでくれますが、
Windowsではビヘイビアが異なるのですね。
勉強になりました。

どうもありがとうございましたm(_ _ )m

お礼日時:2006/03/28 19:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!