|
&init_work; # ディレクトリ作成 & tarball展開 exit; としてテストを実行してみたところ、サーバーからエラーがかえってきています。 その状態では確かにtest00はできてます。 なので&init_work;の後半部分 if ( -f "$log_dir/$date.tgz" ){ system("mkdir -p $main_dir/"); # print "extract $log_dir/$date.tgz\n"; # system("$tar zxf $log_dir/$date.tgz -C $main_dir"); } が問題なんでしょうね…多分。 で、ここの if ( -f "$log_dir/$date.tgz" ){ の-fが何なのかが全然分かってないので、手がつけられないんですが… |
|
> とにかく日立が関係してるようです。 どうもです。早速更新しました。 > が問題なんでしょうね…多分。 事前に ~/test00 と ~/public_html/test-log をmkdirして おけば大丈夫だとは思うんですが、どうでしょう。 > の-fが何なのかが全然分かってないので 本買いましょ〜。 ファイルが存在するかどうかのチェックです。/hoge/file というファイルが存在すれば、-f "/hoge/file" は真に なります。 # 他には # -f ファイルがあるか # -d ディレクトリがあるか # -r 読み込み権限があるか # てな感じです。あと20個くらいはあったはず。 既にその日のアーカイブが存在する →少し前にg2を実行した →いちいち全部落とすのは時間がかかる →事前に展開しておけば、時間の節約 というわけで、動作チェックをしている場合は # if ( -f "$main_dir/$1" ){ next; } の行のコメントをはずすと、既にあるファイルは落とさなく なるはずです。 今日の分をもちまして過去ログ作成は終了しますので、 あとはROLさんにまかせたっ。ではではでは。 |
|
すんません、お師さん。原因はそれじゃないみたいです。 ちょこちょこかえて、「$base_dir/www2.sega.co.jp/bbs/t/test/」ディレクトリが出来るとこまでは確認しましたが、 「test00」内に「sega2.def」と「sega2.def~」が出来てます。 で、$base_dir/www2.sega.co.jp/bbs/t/test/内に何もダウンロードされてません。 「sega2.def」の中身を見ると 「reportlevel 2 start http://www2.sega.co.jp/bbs/t/test/1_index.shtml >following lines are automatically generated by httpdown E http://www2.sega.co.jp/bbs/t/test/1_index.shtml」 ってなってます。 これはつまりHTTPDOWNが巧く働いてないって事ですよね? これはなんでなのかわかんないっす。 もういいかげん、いやになられたとは思いますが、すみませんが ご教授くださいませ。 |
|
sega2.defの内容を level 1 start http://www2.sega.co.jp/bbs/t/test/1_index.shtml にして試してみてください。 # コマンドラインから % httpdown sega2.def それでもダメなら level 1 httpproxy http://hoge.fuga:8080/ start http://www2.sega.co.jp/bbs/t/test/1_index.shtml と、適切なproxyを設定してやるとどうなりますか? |
|
追加 それぞれ出来たsega.defの内容です。 sega2.def~ 「level 1 httpproxy http://www.cs.gunma-u.ac.jp:8080/ reportlevel 2 start http://www2.sega.co.jp/bbs/t/test/1_index.shtml」 sega2.def 「level 1 httpproxy http://www.cs.gunma-u.ac.jp:8080/ reportlevel 2 start http://www2.sega.co.jp/bbs/t/test/1_index.shtml >following lines are automatically generated by httpdown E http://www2.sega.co.jp/bbs/t/test/1_index.shtml」 実はproxyを2、3変えて実験してみたんですが、 同じ内容しか出来ないのでオリジナルの g2の「httpproxy http://www.cs.gunma-u.ac.jp:8080/」に してみた結果がこれです。 やっぱり、CGIを動かすサーバーのPROXYを設定したほうがよいのでしょうか?HTTPDOWNには…? |
|
えっと、www.cs.gunma-uのproxyには、外部の人は接続できないはずです。 いつも使っているproxyを設定してください。 もしサーバ上から % telnet www.sega.co.jp 80 GET / HTTP/1.0(リターン) (もいっかいリターン) として、HTMLが出力されるならproxyは必要ないはずですが、 もしダメなら適切なproxyを設定する必要があります (外部のポート80宛のパケットは通さない設定なのでしょう) |
|
% telnet www.sega.co.jp 80 GET / HTTP/1.0(リターン) (もいっかいリターン) 実行したらHTMLが出力されました!!! ってことで、変数の定義の所の $proxy =以下と &download内の print OUT "level 1\n"; print OUT "httpproxy $proxy\n"; の2行を削除して、やってみます!!! |
|
はじめまして。 えっと、学校の端末でzipを解凍することはできないんですか? そもそもunixではzipはだめなのですか? おしえてください |
|
ROLさん: print OUT "level 1\n"; は削らない方がいいでしょう。これはリンクを1段階たどる、ということを 表しています。 ケースケさん: UNIXでZIPを扱えるアーカイバにはunzipというのがあります。 # ZIP形式は普段使わないのでよくわかりませんが、 # unzipは展開専用、zipは圧縮専用かなぁ? これはflute.cs.gunma-u.ac.jpで、ってことですよね? どうやらインストールされてないようですから、管理者にお願いしたり ソースからコンパイルする方がいいんでしょうけど、それがめんどくさいなら ( find / -name unzip >/dev/tty ) >& /dev/null などで探せます。数分待てばいくつか表示されるので、お好きな ものを使うといいでしょう。 |
|
やっと…、やっとDLまではこぎつけました、はぁ長かった… まぁまだまだ問題は山済み状態なんですが、一番大きな山はこえたのだと思ってます。 で、残された、私ではなんともならない問題… そう、自動化です。 以前、某氏から触りの部分だけ、聞いたはずなんですか さっぱり忘れてます。 なので、どういうファイル名のファイルか、 そしてそのファイルの中身でどういう指事をすれば 任意のCGIを任意の時間に自動的に動かすことができるのか… これを御教授ください。 |
|
まずは http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#crontab をどうぞ。 ~/.crontabにいつどんなプログラムを実行するか書いてください。 毎日6時30分に実行するなら、 30 6 * * * command です。g2をどこに置いたかは知りませんが、ホームディレクトリからの ディレクトリ相対指定で動くはずです。例えば 30 6 * * * bbs/g2 など。わからなければ 30 6 * * * /home/user/bbs/g2 とフルパスで書いてください。 ~/.crontabに書いたら、 % crontab ~/.crontab で登録されます。 % crontab -l として 30 6 * * * bbs/g2 と表示されればOKです。 しかしその前にきちんと動くかどうか、簡単なテストをしてください。 #!/usr/local/bin/perl print "test OK!\n"; というスクリプトを書いて、chmod +x して、そのとき22:55なら 数分後、例えば23:00に実行されるようにしてください。~/.crontabに 0 23 * * * script と書いて、 % crontab ~/.crontab とします。 % crontab -l 0 23 * * * script となれば登録は正常に行われています。で、23:00になったら、test OK! という内容のメールが送られてきたらいいわけです。 crontabについて さらに詳しいことは http://www.jp.freebsd.org/cgi-bin/yoyaku/mroff.cgi?sect=5&bgcolor=%23ffffff&cmd=&lc=1&subdir=man&dir=jpman-2.2.8%2Fman&subdir=man&man=crontab をどうぞ。 わからなければまた聞いてください。 > 任意のCGIを任意の時間に自動的に動かすことができるのか… 細かいことですが、webサーバ経由で実行されるプログラムを CGIと言います(ほんとは、その仕組み自体がCGIなんですけど)。 今回はwebサーバは関与しませんから、プログラムとか スクリプトと言った方がいいですね。 |
|
お師さん、いつもすみませんです。 お教えいただいた crontab とその説明ってFreeBSDのですよね。 BIGのサーバーは Linux 2.0.36で動いてるようで まず「~/.crontab」って名前でファイルがおけなかったので 適当に名前を変えて、% crontab script を実行してみましたが 「bash: /usr/bin/crontab: Permission denied」っていわれて、ダメです。 んで、「whitch crontab」で crontabコマンドを探すと 「whitch: command not found」っていわれちゃいます。 どないしたらよいのでしょうか? あぁ、もうまったく手が出ない世界にアシを突っ込んでるな… |
|
僕の場合.crontabというファイル名にしているだけで、 他のファイル名でも全く構いません。 > 「whitch crontab」で crontabコマンドを探すと whichですよね。whitchじゃなくて。 > bash: /usr/bin/crontab: Permission denied ん〜、とりあえず、 % ls -l `where crontab` (「'」ではなく「`」で囲んでください) と % ls -l `which crontab` の結果を教えてください。あと、 % id の結果も。もしかしたらbigではcronは使えないように なってるのかもしれません。その場合は、管理者に お願いするしかないです。 |
|
え、それぞれの結果です ls -l `where crontab` bash: where: command not found total 1 lrwxrwxrwx 1 root root 22 Oct 30 16:29 ftp -> /home/ftp/pub/usr8 /rol/ drwxr-xr-x 5 rol users8 1024 Jan 10 18:08 html/ ls -l `which crontab` /bin/ls: which:: No such file or directory /bin/ls: no: No such file or directory /bin/ls: crontab: No such file or directory /bin/ls: in: No such file or directory /bin/ls: (/bin:/usr/bin:/usr/local/bin:/usr/X11/bin:/usr/andrew/bin:/usr/openwin /bin:/usr/games:.): No such file or directory id uid=14127(rol) gid=107(users8) groups=107(users8) てな所ですが、どうなるでしょ? |
|
もいっかい。 % ls -l /usr/bin/crontab でお願いします。 |
|
ls -l /usr/bin/crontab -rwx------ 1 root bin 9008 Aug 24 1997 /usr/bin/crontab* って結果です。 ってこれって、オーナーしか動かせないって事…(涙) |
|
その通りです。管理者にお願いしてみましょう。その結果ダメだと 言われたら残念ながらcronは不可、ということになります。 # ソース持ってってコンパイルとか…したいですか? |
|
だ、だめです、お師さん >自動起動系のものはサーバーの保守の関係上、 >いかなる理由があろうとも一切禁止です。 だそうです(涙) MacでAppleScriptで毎日サーバーにTelnet接続して スクリプト起動させるようにする…しかないか? (出来るかどうかは解らんけど…) |
|
うーん、仕方がないと言えば仕方がないですね。管理者が そういう方針を取ることは理解できます。 結局は6:30に起動するプロセスがあれば、その中で g2を実行すればいいわけです。内部にきっかけとなる プロセスを用意することができないなら、外部から 呼ぶという手もあります。AppleScriptも一つの手ですね。 他には ・6:30に自動的にbigの中のあるwebを取得するように して、その中でCGIを動かしておく。そのCGIの中で g2を実行(CGIは普通nobody権限で動くので、そこら へんに問題あり)。 ・6:30に自動的にbigにメールを送る。.forwardに メールが届くとあるプログラムが起動するように しておいて、現在時刻が6:30付近ならg2を実行 とかとか。 |