• ベストアンサー

PerlでURLにアクセスして、その内容をファイルに落とせますか?

知人から以下のような相談があったのですが、少し急ぎで困っています。 その知人が働くNGO団体で取引のある1万近い個人・法人のデータベースに関することなのです。 以前はその団体にUNIXマシンの管理者が一人いて、その人がUNIXマシンでデータベースを管理していたのだそうです。が、その管理人が亡くなって、誰もそのマシンにログインできないとのこと。でも、マシン自体は普通に動いています。 で、そのマシンはネットでつながっていて、外部から https://www.なんちゃら.ne.jp/なんちゃら/なんちゃら.cgi?1 https://www.なんちゃら.ne.jp/なんちゃら/なんちゃら.cgi?2 https://www.なんちゃら.ne.jp/なんちゃら/なんちゃら.cgi?3 … という感じでアクセスすると、データベースの会員番号1番、2番、3番の人のデータがHTMLで個人情報が表示されるような仕組みになっています。 (IDとパスワードの入力は必要ですが、1回入力すれば聞かれないみたいです) そこで、外部のマシンから、Perl(もしくは別のスクリプト言語でもいい)のスクリプトを実行することで、この1万人近いデータベースを吸いだせないか、ということなのですが、簡単なことなのでしょうか? ざっくりどんな感じのソースになるのかお教えいただければ助かります。 そのNGO団体のパソコンでPerlが動く環境ですので、Perlを勉強してソースを書けるように頑張って勉強しようと思ったのですが、ちょっと急ぎなのでヒントだけでも頂けたらと思った次第です。 よろしくお願いします。

  • Perl
  • 回答数4
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • takeshiue
  • ベストアンサー率100% (1/1)
回答No.4

一番良い方法はCGIのスクリプトの中身を調べて、 プログラムの中身を把握することだと思います。 10000件のデータを保管しているとのことなので、ファイルなのか、DBなのか わかりませんが、通常きちんとしたフォーマットに従って処理されていると思います。 事情があって、サーバーにログインできずにCGIソースを閲覧する事ができないということであれば、対応は以下のとおりだと思います。 ■シェル等を使い、データをHTML形式でダウンロード 以下の一行で1万件のデータ自体はファイルに取り出せると思います。 for x in `seq 1 1000`;do wget --output-document=$x http://example.com/exmaple.cgi?$x;done; ■ダウンロードしたファイルの解析 ダウンロードしたファイルの解析については、出力される内容に依存しますので、どうすればというのはなんとも言えないですが、 HTML::Parser などを使うと比較的簡単に処理できると思います。 仕事半分、趣味半分でそうしたことをやってますので、 自分で行う時間がないのであれば、下記のフォームからでも ご相談いただければと思います。 http://e-uematsu.net/php/form.php

kagichan
質問者

お礼

ありがとうございました。 実はいろいろ事情がありまして、そのunixマシンの隣に設置されているWindowsマシンからしかアクセスができない状況だったのですが、どうにかPerlでデータを吸いだせました。 ファイルの解析はこちらでどうにかできそうです。

その他の回答 (3)

noname#208124
noname#208124
回答No.3

普通LWP でもシェルスクリプトでwget回す方が簡単 自分が頼まれたら電源落としてHDD取り出すのが一番速いけども

kagichan
質問者

お礼

短いながら、参考になりました。ありがとうございました。 HDDの取り出し、は考えてもいなかったのですが、そんな手段もあるのだなと勉強になりました。

  • lesstia
  • ベストアンサー率45% (44/96)
回答No.2

なんちゃら.cgiを解析するのが一番早いと思います。 もしくは、 sh なんちゃら/なんちゃら.cgi?n >> ファイル みたいな感じのを繰り返すループを組めば取り出せるのではないでしょうか。

kagichan
質問者

お礼

ありがとうございます。 .cgiを外部マシンから解析するのは、ちょっと僕の手には負えませんでした。 unixマシンが使える環境ならいいのですが…。

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

Perl から Web サーバーへのHTTPアクセス、確かに出来ますが、私が知ってるのは Socket.pm を使う方法で、急造プログラマにできるかと言われるとかなり心配です。 Socket あるいはもっと簡単な方法での HTTPアクセスに成功したとしても、データを漏れなく取得する工夫やそれを別マシンのデータベースに流し込むのはより高スキルが要求されそうに思います。 失礼ながら、引き受けてもらえる技術者を探される方が良くないでしょうか。 そっち方面に明るい技術者が味方につけば、HTTPアクセス以外にどんなアプローチがあるかも相談できると思います。 あ、kagichan さんがたまたま Perl を知らないだけで他の言語(C とか)でのシステムプログラミングには熟練されてる方なら、私の書き込みは忘れてください。

kagichan
質問者

お礼

ありがとうございます。 Socket.pmは結局使えませんでした。すみません。 当方、20年~15年ほど前にとある企業にて、Cで組み込み機器の開発の 仕事をしていましたが、どうもネットワークとかそういう話には弱いのです (そういう意味ではほとんど初心者です)。

関連するQ&A

  • cgi(perl使用)でファイルを作る方法を教えてください

    こんにちは、 perlをやっています。 プロバイダ上にperlスクリプトを拡張子cgiでUPしています。 いまやりたいことがあるんです、それは ファイルをサーバ上の領域に作るというものです (ちなみにサーバの種類はUNIX系です) ファイルはゼロバイトの何も無いテキストファイルを作りたいんですが どのような関数を使えばファイルができるのでしょうか。 また、ファイルを作った後パーミッションの変更(chmodコマンドのような 動き)をする関数等があれば教えてください。

    • ベストアンサー
    • Perl
  • Perlソースを2つのファイルに分ける

    2つ以上のCGIファイルを使う方法を教えてください。 例えば、 #!/usr/bin/perl (1.cgi) print "Content-type: text/html\n\n"; print '<html><body>'; $t1 = 'abcd'; $t2 = 'EF'; $t1 = &fnc($t1,$t2); sub fnc{  $s1 = @_[0];  $s2 = @_[1];  return $s1.$s2; } print $t1; print '</html>'; このソースの  'abcd' (2.cgi) と  $t2 = 'bc'; (3.cgi) と  sub fnc{ (4.cgi)   $s1 = @_[0];   $s2 = @_[1];   return $s1.$s2;  } の3つのタイプを外部ファイルとして、全部で4つのCGIに したいと思っていますが、可能か不可能か、可能であれば それぞれのCGIファイルのソースを教えてください。

    • ベストアンサー
    • Perl
  • ApacheがPerlを作動してくれないのです。。。

    CGIテストのためにローカルにサーバーマシンを立てました。サーバーはApacheを使用しPHPとPerlをそれぞれインストールしました。 PHPは正常に動いてくれますがPerlだけが何回やってもyou dont have a permission ~~~と表示されます。 ためしにコマンドでperl -v と打ったら正常にPerlは作動していました。ちなみにPerlは C:Perl\bin\perlになっておりCGIスクリプトにも #!C:Perl\bin\perlと表示しています。又、confも各サイトを見てCGIが動くようにしっかり編集しました。 どうすれば動くようになるのでしょうか?

  • 携帯電話でCGIのファイルを読むと文字が・・・

    携帯電話で読めるようなホームページを作っています。 ところが、FORMでCGIファイルを見に行くと、日本語が文字が化けます。 CGIファイルはPERLですが、UNIXサーバでPERLスクリプトをSHIFT JISで書くとうまく動作しないことがある、と、手持の本には書いてありました。 みなさんは、どの様にされておられるのでしょうか? あるいは先の本に書かれていることは昔の話しで、今はUNIXのPERLでもSHIFT JISとCR+LFでスクリプトを書いても問題ないのでしょうか? よろしくお願いします。

    • 締切済み
    • CGI
  • 趣味のプログラミング、シェルスクリプトでやるなら?またはPerl?

    新人SEです。仕事でUNIXのシェルスクリプトを使っているのですが休日にも趣味でシェルスクリプトで何か書けたらいいと思っています。 しかし趣味のシェルスクリプトとなると、何を書いたら楽しめるか・便利になるのかあまりイメージが湧きません・・自宅でサーバ管理などしてるわけではないので、クライアント側では何かシェルスクリプトを使うメリットがあるのか分からないのです。 ちなみに、シェルスクリプトが趣味になりそうになかったら、同じUNIX系ツールということでPerlを覚えようかとも思っています。Webアプリの作成などにも興味ありますし・・ 趣味のシェルスクリプト、何かいい例などありますでしょうか?関連してPerlについてでもいいので何か教えて頂けると嬉しいです。

  • CGI/Perlでメールフォームを作るには。

    CGI/Perlでメールフォームを作るにはHPのトップページ(ソースコード)にCGI/Perlのプログラムを入力すればメールフォームは使用できるようになるのでしょうか? よろしくお願いします。

    • 締切済み
    • CGI
  • perl から unix コマンドを入力する方法

    perl から unix コマンドを入力するには、どのようにしたらよいのでしょうか。 具体的には、フォームから受け取った文字列を、useradd に渡して、ユーザーの追加をしたいのです。 perlスクリプトの所有者はrootで、属性はsetuid(4755)にしています。

    • ベストアンサー
    • Perl
  • 同一筐体におけるPerlの複数バージョンは共存できますか?

    ■はじめに Perlについて初心者(これから勉強するレベル)ですが、以下、 ご教示程宜しくお願いします。 (現在、サイト等で調査しておりますが、わかっていません。 ここをみてくださいといったサイト(URL)のご紹介でも結構です。) ■質問 (1)UNIXマシン上でOSバンドルのPerlがありますが、    これとは別のバージョン(上位)をインストールしたいのですが    まず、このようなこと(同一筐体で複数のPerlを共存させること)はできますでしょうか?   →Perl・CGIのアプリケーション毎に見るライブラリを    Perl5.8.0だったり、5.8.3だったりスクリプト上の定義を   変えるといった対応? (2)(1)ができる場合、そのインストール~設定・確認手順   についてご教示願います。 (3)(1)ができる場合、逆に、1つのUNIXサーバに複数のPerl   があるかどうかを確認する方法を教えてください。   >Perl -v で行うと、1つしか出ない。   これは    (1)本当に1つのバージョンしか存在しない    (2)複数存在するが、バージョンアップした現在のバージョンが     表示されている   の(2)も考えられます。   そこで、旧バージョン(バージョンアップ前に入っていた   Perlのバージョンを確認することはできませんか?)   コマンドベースで教えていただけると助かります。 以上です。

    • ベストアンサー
    • Perl
  • javascriptの中で、perlのコマンドを実行できないか。

    javascriptの中で、perlのコマンドを実行できないか。 java:クライアント側の処理。 perl(cgi):サーバ側の処理。 なので、愚問かもしれないのですが、 ↓====================================== <script language="JavaScript"> <!-- function aaa(){  : EOM (この間に、perlの処理) print <<EOM; : } // --> </script> ↑====================================== と言った感じで、javascriptのfuncitonの中で、 perlを使って、データベースへの操作をしたいのですが、 やはり、無理でしょうか。 あるいは、代案などあればご教授願えませんでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • perl cgi, パスワード可能なレンタルサーバ

    従来ジオシティーズでperl CGIを作っていました。 しかしジオシティーズではパスワードによるアクセス制限ができないことがわかりました。 パスワード管理(たとえば.htaccessなどによる)が可能でperl cgiが動くレンタルサーバはないでしょうか? 絶対条件としては、サーバに作成したデータベースの所有権がユーザ側にあることや、サーバとしての信頼性です。ですので、無料サーバよりむしろ有料であって、サーバのダウンが極力なくセキュリティーもしっかりしているところの方がよいです。 なんらかのSQLデータベースもCGIから使えれば好ましいです。 そういったレンタルサーバをご紹介ください。

    • ベストアンサー
    • CGI

専門家に質問してみよう