![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
お世話になります。
私の勤める会社では社員向けにHPである数字を見せています。
ガードは掛かっていませんのでアドレスが分かれば誰にでも見られてしまいます。
実際、見られてどうのという数字ではありません、社員にしか意味がありませんので。
でも社員にとっては、その数字を使うなり加工するなりして生かさなければなりません。
現在は、毎回数字を控え、手作業によりFTPで私の個人的なサーバーに保存し、
その後取り込んだ数字を使って数ステップのcgiが動いています。
これが大変なので、出来ればシステム化したいのです。
どのように対応すればよいでしょうか。
駄目ならこれまで通り手作業保存を続けないといけません。
条件として、
1.cgiは見よう見まねで書いたことがあります。
(サンプルをカスタマイズする程度で、一からは書けません)
2.データはテキストで、もちろんアドレスも分かります。
(当然会社のサーバーに格納されています)
3.私の個人的なサーバーはcgiはokですが、lwpは使えません。
4.会社に依頼して個人宛に送信して貰うということも期待できません。
宜しくお願いします。
No.5ベストアンサー
- 回答日時:
例えば、
http://www.abcde.co.jp/testdata/test.txtが見たいテキストだとすると、サンプルの$hostに'www.abcde.co.jp'、pathに'/testdata/test.txt'を
セットして実行してやれば、そのテキストファイルの内容がゲットできます。
テキストファイルではなく、Webページに表示された内容ならやはりpathに
ホストを除いたアドレスの残り部分をセットしてやれば同様です。
そのままファイルに出力しても良いし、適当な場所だけ抜き出して保存しても
それはロジック次第で自由です。
それから、フリーのCGIを提供されているサイトを一つ紹介しておきます。
Socketを使用したCGIも多いので、ダウンロードして見るだけでもかなり
参考になると思います。
前の質問を締めずに次の質問をするとマナー違反と指摘する人も
居ますので注意してください。
(そういう指摘を時々見かけますので)
参考URL:http://www.ln-lab.net/
Yeti21様、最後まで細かな親切、有り難うございました。
全て了解しました。
フリーウェアのcgiは使いこなせるか全くこれからですが、とにかく勉強してみます。
また、質問を締め切りしないで次に質問をすることのマナー違反は知りませんでした、勉強になりました。
うまくいったときにはお礼を言う場がないのですが、分からない場合はまた新たな質問をさせていただきますので、その時にも今回同様、宜しくお願いします。
どうも有り難うございます、お世話になりました。
No.4
- 回答日時:
少し考えては見ますがすぐには思いつきません。
この質問も既に見る人も少なくなっていると思いますので、
一旦締め切って再度現状を記載して質問してみてはどうでしょうか?
その方が多くの人の目に付くと思います。
その際、サーバの環境(OSやhttpサーバの種類やバージョン等)も
提示した方が良いと思います。
この回答への補足
それから、書くのを漏れてしまいましたが、
そもそもやりたいことは、会社にあるテキストデータ(数字)を私の個人的なサーバーに格納することです。
soketという機能で解決できるのでしょうか。
何回も済みませんが、宜しくお願いします。
Yeti21さん、どうも有り難うございました。
了解です。
これまでの動きをまとめて新たに再度質問を考えてみます。
ここももう少し開けておきたいのですが。
ところで、
ジャンルは何処が宜しいのでしょうか。
perl、cgi、HTMLしか思いつかないのですが。
私もsoketを勉強してみたいと思います。
No.3
- 回答日時:
ANHTTPDは使ったことが無いので、環境を作ってみました。
(ANHTTPDとActivePerlは最新版です)
補足に書かれたスクリプトをそのまま実行してみましたが、問題無く実行されました。
ただし、私の環境ではプロキシを通ることができないためlocalhostで実行しました。
www.yahoo.co.jpでも実行できましたが、HTTPのGETでエラーになります。(これはあくまで私の環境の問題です)
ANHTTPDかPerlの設定かバージョンの問題だと思います。
403のエラーならもう少しエラーが特定できるメッセージが出ていると思いますが。
結果は以下の通りです。
step1
host=localhost, port=80, url=
step2
step3
step4
step5
step6
HTTP/1.1 200 Document follows MIME-Version: 1.0 Server: AnWeb/1.42p Date: Thu, 19 Oct 2006 08:51:25 GMT Content-Type: text/html Last-Modified: Thu, 19 Oct 2006 08:51:25 GMT Connection: close
step7
step8
test end
毎回有り難うございます。
お礼、補足のあとトレースしていましたら、エラーの原因が分かりました。
cgiのパーミッションを設定漏れしていました。
実行が入っていませんでした。
その後にやってみたのが以下の通りです。
step1
host=www.yahoo.co.jp, port=, url=
step2
step3
ということで、エラーは消えましたが、step3で止まってしまいます。
これからソケットの設定に掛かるところです。
これこそ私のサーバーがソケットを許していないのでしょうか。
AN HTTPD でのエミュレーションでは、Yeti21さんと全く同じように最後まで行きます。
そして文字化けはあるのですが、yahooのトップページも表示されました。
この状態で評価して貰えると助かります。
宜しくお願いします。
No.2
- 回答日時:
1.稼動するかどうかは詳細に見ていないので答えられません。
少なくともperlのパスは稼動するサーバに合わせて修正する必要がありますが、
あくまで、httpの参照ロジック部分のサンプルとして紹介しただけで、そのまま
使うという前提では有りません。
ただ、cgiとして稼動させるということを前提としています。
名前は別にhttp.plに拘る必要はありませんので、xxx.cgiでも自由に作成して
いただければ良いと思います。
逆に、~.plという名前でcgiとして稼動可能かは質問者様のhttpサーバの設定次第なので
私にはわかりません。
2.その通りです。サーバ側の情報です。
では、頑張ってください。
この回答への補足
今回試しているcgiです。
#!/usr/local/bin/perl
# @(#)http.pl Copyright (C)2001 ASH. http://ash.jp/
#
# 簡易ブラウジングスクリプト(HTTP)
# Usage: http.pl URL(http://host:port/dir/file)
#
$|=1;
print "Content-type: text/html\n\n";
print <<"nghh";
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE>test</TITLE>
</HEAD>
<BODY>
<h1><font color="green">test</font></h1>
<br><br>
<HR>
nghh
print "<br>\n";
print "step1\n";
print "<br>\n";
use strict;
use Socket;
use FileHandle;
my ($proxy_host, $proxy_port, $http);
my ($con_host, $con_port);
my ($host, $port, $url, $path, $ip, $sockaddr);
my ($arg, $buf);
($arg) = @ARGV;
# HTTPプロトコルのバージョン
$http = '1.1';
# プロキシサーバの設定
#$proxy_host = 'XXX.XXX.XXX.XXX';
#$proxy_port = 8080;
# デフォルトホストの設定
#$host = 'localhost';
$host = 'www.yahoo.co.jp';
$port = getservbyname('http', 'tcp');
$path = '/';
# URL解析処理
$arg =~ m!(http:)?(//)?([^:/]*)?(:([0-9]+)?)?(/.*)?!;
if ($3) {$host = $3;}
if ($5) {$port = $5;}
if ($6) {$path = $6;}
print "host=$host, port=$port, url=$url\n";
print "<br>\n";
print "step2\n";
print "<br>\n";
if ($proxy_host) {
# プロキシサーバ経由
$con_host = $proxy_host;
$con_port = $proxy_port;
$url = $arg;
} else {
$con_host = $host;
$con_port = $port;
$url = $path;
}
print "<br>\n";
print "step3\n";
print "<br>\n";
# ソケットの生成
$ip = inet_aton($con_host) || die "host($con_host) not found.\n";
$sockaddr = pack_sockaddr_in($con_port, $ip);
socket(SOCKET, PF_INET, SOCK_STREAM, 0) || die "socket error.\n";
print "<br>\n";
print "step4\n";
print "<br>\n";
# ソケットの接続
connect(SOCKET, $sockaddr) || die "connect $con_host $con_port error.\n";
autoflush SOCKET (1);
print "<br>\n";
print "step5\n";
print "<br>\n";
# HTTP要求を送信
if ($http eq '1.1') {
print SOCKET "GET $url HTTP/1.1\n";
print SOCKET "Host: $host\n";
print SOCKET "Connection: close\n\n";
} else {
print SOCKET "GET $url HTTP/1.0\n\n";
}
print "<br>\n";
print "step6\n";
print "<br>\n";
# HTTP応答を受信
while (chomp($buf=<SOCKET>)) {
print "$buf\n";
}
print "<br>\n";
print "step7\n";
print "<br>\n";
# 終了処理
close(SOCKET);
print "<br>\n";
print "step8\n";
print "<br>\n";
print "<br>\n";
print "test end\n";
print "<br>\n";
また、早速返事を有り難うございます。
分からないなりにサンプルをコピーし、手を加えて、とりあえずフリーウェアの AN HTTPDでエミュレーションしてみました。
何とか結果が帰ってきました。
(実行したcgiは補足に上げさせていただきます)
やりたいことはまだ(データをサーバーに保存したい)なのですが、
個人的なサーバーの確認がしたいので、同cgiをアップし実行してみました。
1.結果は、403cgiエラー と 500インターナルサーバーエラーが出ました。
ということは、私が使っているサーバーでは、soketを許して居ないということでしょうか。
2.もしくは本当にどこかにエラーがあるのでしょうか。
3.もし使えるのなら次のステップ(データの取込)に移りたいのですが。
手探りでやっているような状況です。
宜しくお願いします。
No.1
- 回答日時:
参考URLの解説を参考に、そのホームページを読み込んでやれば、
あとは中身を取り出すだけです。
レイアウトを分解して必要な値を取り出すロジックは自分で考えてください。
それほど難しくは無いと思います。
参考URL:http://ash.jp/perl/socket_http.htm
早速有り難うございました。
まず、出来るということで一安心です。
ただ、参考サイトを読んでみましたが、ちんぷんかんぷんです。
これからしっかり勉強します。
また引き続き宜しくお願いします。
早速ですが、現状で何点かお願いします。
1.例題にあるhttp.plとは私のサーバーのcgi-binフォルダに
http.plという名前で置いて、その名でアドレス欄に打ってやれば
稼働するのでしょうか。
(cgiと同じ扱いで宜しいのでしょうか)
2.『Webサーバに直接接続する場合は、ホスト名、ポート番号、URLディレクトリ』
と在りますが、これは相手(会社サーバー)のことですよね。
全く素人で申し訳在りません。
とにかくやってみます、有り難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 事務・総務 帳票類やデータがありません。法人成り。 解体業の会社で現場作業員 兼 事務員として勤めているのですが 3 2023/06/02 13:27
- 減税・節税 国保➡社会保険に加入のがふるさと納税の恩恵がある? 3 2023/05/26 11:48
- 減税・節税 ふるさと納税返礼品制度を活用する為の方法 1 2023/05/23 15:56
- 会社経営 やりたい仕事と食っていける仕事の違いに悩んでます。 私は地方の個人店に毛が生えた程度の花屋に勤めてい 4 2022/09/14 10:34
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- サーバー メールサーバーについて詳しい方、メールサーバーの管理業務経験のある方、教えてください。 3 2022/11/12 18:24
- VPN フリー wi-fi は安全ですか 自宅での wi-fi VPNを使用したら良い? 2 2022/05/31 04:12
- その他(メールソフト・メールサービス) メールサーバーは「PC側がメールをDL済みか否か?」を何を以て感知するのか? 2 2022/12/20 14:56
- クレジットカード 訪日客がカード使うと日本のカード会社は赤字になるって本当ですか? 2 2023/08/17 18:48
- その他(ビジネススキル・経営ノウハウ) 独占禁止法、下請法、優越的地位の乱用 1 2023/03/11 22:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onmouseoverでセキュリティ保護
-
saved from url=(0013)abou
-
リンクを押すとEXEファイルを実...
-
ソースのリンク先などの暗号化...
-
作成したHTMLフォーム画面の記...
-
HP作成の際、どうしていますか?
-
HTMLでDBからデータを表形式で...
-
【JavaScript】confirmのボタン...
-
データ受け渡しについて
-
[JavaScript] preven...
-
webシステムでchrome
-
Ajaxでsessionにいれた値が引き...
-
google トラッキング コ...
-
リサイクルショップの「動作OK...
-
ASP.netで作成したシステムのip...
-
読み込み中に「Now Loading」を...
-
JQuery サーバー上にアップする...
-
JSTLを利用してJavascriptの結...
-
jsonテキストデータの並び替え...
-
Response.Write(変数)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLでDBからデータを表形式で...
-
saved from url=(0013)abou
-
ローカル用HTMLファイルの安全...
-
ソースのリンク先などの暗号化...
-
リンクを押すとEXEファイルを実...
-
現在HPを制作中で、jQueryプラ...
-
ローカルファイル(mp3)の再生
-
ローカルでのhtmlチェックにつ...
-
Webスクレイピング Google Cola...
-
NetBeansのFTP機能について
-
ハローワークインターネットサ...
-
テーブルで作った表をボタン操...
-
Python3, Flask, Jinja2などで...
-
手作業をシステム化したいのですが
-
作成したHTMLフォーム画面の記...
-
アップロードの完了前に容量を...
-
ブラウザ(IE)からEXEファイル...
-
フォームを自分のコンピュータ...
-
ホームページ上に外部のテキス...
-
enctype="multipart/form-data"
おすすめ情報