- ベストアンサー
同じサーバ内のHPをロボットで一覧するCGI
学校のサーバ内(FTPで見えるユーザ)のユーザのHPを ロボットで自動検索し、TOPページ(pubilc_htmlの下にあるinde.html) を一覧で表示してくれるCGIを探します。 なにか手がかりがあればご教授ください。お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
サンプル作ってみました。 細かい説明は難しいので、一番単純そうな形です。 以下のソースをlist.cgiといったファイル名で作成して、webから実行すればOKのはず。 cgiを動かす方法がわからない場合は、perl list.cgi > list.html とかして 一覧ページを手動で作成するのはどうですか。 先頭3行は環境に依存しますので、なんとか合わせてください。 #!/usr/local/bin/perl #perlの格納場所。-> which perlの結果 $url = "http://xxx.xx.xx/"; #ユーザ名の前までのURL -> http://xxx.xx.xx/~ユーザ名/index.html $path = "/home/"; #ユーザ名の前までのディレクトリ -> /home/ユーザ名/public_html/index.html print "content-type: text/html\n\n"; print "<html><body>\n"; $x = $path . "*/public_html/index.html"; foreach $file (<${x}>){ $a = substr($file, length($path)); $a =~ s/public_html\///; $ref = $url . "~" . $a; print "<a href=$ref>$ref</a><br>\n"; } print "</body></html>\n"; ここから先はがんばってください。
その他の回答 (2)
- bikkuri
- ベストアンサー率33% (23/68)
他人のディレクトリ下を勝手に見ていいの? という問題もあるような気もしますが・・・ とりあえずこんな感じでファイルの一覧を取得できます。 foreach $a (<../../*/public_html/index.html>){ print "$a\n"; } あとは、何とかページにしてください。 パスを変数で表現したいときは $x = '../../*/public_html/index.html'; foreach $a (<{$x}>){ print "$a\n"; } でいけるようです。
お礼
今、ためしに実行してみました。 すると幾人かのindex.htmlファイルを検出する事が出来ました。 これを改造すればリンク集が作れるかもしれません。 本当にありがとうございました。 ・・・その前にperlの勉強せねば・・・
補足
公開しているHPなので大丈夫だと思います。 アドレスも規則性のある番号で決まっているので URLを一人一人検出して手作業でリンク集を作ることも可能ですが すごく・・・面倒なので・・・ コンピュータ言語にホボ無知なのでかかれていることが サッパリなのですが・・・これはperlと呼ばれているものなのでしょうか?? これを***.plと名前を付けてtelnetとかで実行してみたらいいのでしょうか ・・・ぅーん勉強してみます。 ご指導ありがうございました。
- shy00
- ベストアンサー率34% (2081/5977)
http://www.kent-web.com/data/index.html 書籍にて配布している物ですが「Web Finder」というものが ありますよ
補足
補足を書いたつもりが投稿されてなかったみたいですみません。 まず早速のお返事ありがとうございます。 私の説明が足らなかったせいか少し私の探しいるCGIとは別物のようです。 私の探しているCGIを例で示すと たとえば同一のサーバー内に ----ユーザ1---public_html---inde.html---etc... ユーザ2---public_html---inde.html---etc... ユーザ3---ホームページなし ユーザ4---public_html---inde.html---etc... ユーザ5---ホームページなし このような感じでサーバ内にホームページのTOP(index.html)が あった場合にそれを自動で見つけ出しhtmlファイルにしてくれる CGIでも別のアプリケーションでも構わないのですが そういうの探しています。 もしくはそう言うCGIなりアプリケーションを作る手立てを探しています。 作りたいのは検索システムでなくてリンク集です。
お礼
たびたびご指導ありがとうございます。 上のソースを少しだけ変えて作ってみました。 すると何とか一覧が出力されました。 とりあえず目標は達成できました。 ちなみに /home/ユーザ名/public_html/index.html というところが実際には /home/a/ユーザ名/public_html/index.html /home/b/ユーザ名/public_html/index.html ・・・・ と言う風にaグループ bグループ etc...というような感じで 分かれているので、これをどう扱えばいいのかわからなかったので とりあえず $x = $path . "*/public_html/index.html"; foreach $file (<${x}>){ $a = substr($file, length($path)); $a =~ s/public_html\///; $ref = $url . "~" . $a; print "<a href=$ref>$ref</a><br>\n"; } print "</body></html>\n"; ↑これをグループ事に記述して結構長い物になってしまいましたが どうに一覧は出ています。 これも foreachというのを上手く使えば短いものになるのだと思い 少し奮闘してみます。 はじめてperlというものにふれてみましたが面白いですね。 本当にあるがとうございました。