• ベストアンサー

PerlでIPアドレスを取得する方法

Perl5.6 or 5.8を使っております。 環境変数からIPの取得をするのは、CGIで動いている前提?ですが、 CGIでなくてperlスクリプトが単体で動作した場合に他の例えばサーバーのアドレスを知るにはどのようにしたらよいのでしょうか? 自アドレスはgethostbyaddrで取得できます。 REMOTE_ADDRの値を取得したいです。

  • Perl
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

$addr=(gethostbyname("www.***.ne.jp"))[4]; てな感じだと思います。 単体で動作した時に「REMOTE_ADDRの値を取得したい」 というのは意味がよくわかりません。

関連するQ&A

  • 【 REMOTE_HOSTの値の取得方法について 】

    既製のCGIを設置するのがイッパイイッパイの 初心者ですm(__)m REMOTE_HOSTの値を取得して表示させたいのですが 当方レンタル中のサーバーの初期設定では取得できず 下記の如くの手順で取得するように表示してありましたが どうにも理解できず困っております。 下記の「Perl内」とは何処の事を指しているのか アドバイスを頂きたくお願い申し上げます。 ****以下、該当サーバーの説明文引用***** 【 REMOTE_HOSTの値の取得方法について 】 レンタルサーバーの処理速度を優先して、初期状態ではIPアドレスからDNSの参照をしないように設定している為、REMOTE_HOSTの値を取得したい場合はPerl内で下記の記述をして下さい。 $addr = $ENV{'REMOTE_ADDR'}; $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $addr;

    • ベストアンサー
    • Perl
  • ページのアドレスを取得する記述方法を教えてください。

    たとえば、IP、HOSTを取得するには、 $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if(!$host && $addr){ $host = (gethostbyaddr(pack("C4",split(/\./,$addr)),2))[0]; } と記述して、 センドメール部分に、 $host , $addrをどこかに記述します。 これと同じように、ページのアドレスを取得する記述はどうすればいいのか教えてください。

    • 締切済み
    • CGI
  • IPアドレス等について

    IPアドレス等の基本的なことがわからなくなっているのですが、 プロバイダに加入するという事は、 プロバイダのサーバとLANで接続されるという事なのでしょうか? 自分のマシンにはローカルIPアドレスが基本的には自動割振りされているのですか? それから、カテゴリーが違う質問かも知れませんが、 CGIの環境変数のREMOTE_HOSTやREMOTE_ADDRとは CGIプログラムを実行した人のプロバイダのホスト名やIPアドレスを言っているのでしょうか? よろしくお願いします。

  • IPアドレスを4バイト長にパックする方法

    環境は、DNSによる名前解決が出来ないUnixサーバです。 下記のようにgethostbyname関数を使って変数$addrに代入される値を、 IPアドレスから変換して取得したい考えています。 $addr = gethostbyname("www.aaa.co.jp") 仮にIPアドレスを 172.17.5.5 とした場合、このIPアドレスを gethostbyname関数を使って変数$addrに代入される値と、同じ値に 変換する方法はありますでしょうか。

    • ベストアンサー
    • Perl
  • cgi環境変数の変更方法?

    cgi環境変数の変更方法? perlで書かれたcgiプログラムがあります。 そのcgiではcgi環境変数内のREMOTE_ADDRを読出し、特定のIPアドレス【特定の端末】であれば特別処理を行っております。 今回、別の端末【別のIPアドレス】から同じ特別処理をする必要が生じました。 サーバ側のcgiプログラムを修正すれば簡単なのですが、著作権上の問題があって出来ません。 そこで端末側のプログラムがC#のWebClientクラスを使用してサーバと交信しているのを幸いとして myClient.Headers.Set("REMOTE_ADDR", "xxx,xxx,xxx,xxx"); ← 従前のIPアドレスへの変更 のステートメントを追加して強制的にIPアドレスを変更しようとしました。 ところがサーバ側のcgi環境変数には、HTTP_REMOTE_ADDRという新しい要素が加わっただけであり、目的とするREMOTE_ADDRを修正出来ません。 調べてみると、apacheがHTTP_タグを追加しているとのことです。 この追加をやめさせREMOTE_ADDRに当方が望むIPアドレスを設定することは可能でしょうか?

  • 送信者のIPを取得するには

    現在メールフォームを作っています。 送信者の情報を取得する作りにはしていません。 迷惑メールが届き出してからでは遅いので、 ホスト名やIPアドレスを取得するフォームにしたいのですが、 <INPUT TYPE="hidden" NAME="env_report" VALUE="取得したい情報の属性"> という記述をCGIファイルに書けばいいのでしょうか。 また、下記の記述をどこに書くのかも分かっていません。 REMOTE_HOST 送信者(入力者)のホスト名 REMOTE_ADDR 送信者(入力者)のIPアドレス どなたかご教授をお願いします。

  • PerlからPHPに移植したアクセス制限

    下記は、CGIファイルから持ってきたスクリプトをPHPに変換してみたものです。 エラーが出るの出ます-> Parse error: syntax error, unexpected '/', expecting ')' in /home/users/1/raindrop.jp-5247423/web/tsukushinbo/bbs/bbs_header.php on line 32 どう修正すれば教えていただきたいです。 <?php #----------------# # ホスト名取得 # #----------------# function get_host(){ $host = $_SERVER{'REMOTE_HOST'}; $addr = $_SERVER{'REMOTE_ADDR'}; if($gethostbyaddr){ if ($host === "" || $host === "$addr") { $host === gethostbyaddr(pack("C4", split(/\./, $addr)), 2); $host === gethostbyaddr(pack($addr)); } } if($host === "") { $host = $addr; } } ?>

    • ベストアンサー
    • PHP
  • Perlを使ったアクセス制限方法

    CGIのページにアクセス制限を掛けたいと思い 検索エンジンを使い色々探しまして下記のアクセス制限方法を見つけました。 http://easycgi.xrea.jp/perltips/acclimit.htm を参照して CGIの最初(#!/usr/bin/perl の次の行)に下記スクリプトを埋め込みました。 sub check { @hosts = ('hoge.ne.jp','hoge.co.jp'); $host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2) || $ENV{'REMOTE_ADDR'}; foreach $i (@hosts) { if ($host =~ /$i/) { print "アクセスが許可されていません。\n"; exit; } } } リモートホストでアクセス制限を行いたいのですが 上記の方法を試しても、hoge.ne.jpとhoge.co.jpからアクセス出来てしまいました。 htaccessを使わずにCGIページへアクセス制限を掛ける方法はないでしょうか? 何かアドバイス頂けると助かります。

  • Perlでの$ENV{REMOTE_ADD}の信ぴょう性を教えてくださ

    Perlでの$ENV{REMOTE_ADD}の信ぴょう性を教えてください。 Perlによる、CGIサイトを運営しています。 IPアドレスを$ENV{REMOTE_ADD}で取得し、Firewall内プライベートアドレス(10.*.*.*)以外はloginをしないと内容が表示されないようにスクリプトをつくり、Firewallの内外から動作確認し、きちんと動いていたのでそのまま運用していました。 ところが、先日海外(ハワイ)に行った際、アップルストアでそのサイトにアクセスした際にloginなしで内容が表示されてしまいました。 アップルストアに置いてあったPCなので、IP偽装などは行っていないと思われますので、どうして見えるのだろうかわかりません。 $ENV{REMOTE_ADD}で取得した値は信ぴょう性がないのでしょうか?それとも、10.*.*.*はグローバルアドレスとして使用可能なのでしょうか?

    • ベストアンサー
    • Perl
  • ASPでIPアドレスの逆引きした結果をしりたい

    サーバーの不正利用者の特定をするため、データーベースにIPアドレスか、 或いはIPアドレスを逆引きした結果を記録したいと考えています。 IPアドレスの取得については、 Request.ServerVariables("REMOTE_ADDR") で取得できることが分かるのですが、逆引きしたものは どうすれば取得できるのでしょうか?

専門家に質問してみよう