in reply to Can my perl scripts get the IP address that called the script?

Assuming CGI, say $ENV{REMOTE_HOST}


🦛

  • Comment on Re: Can my perl scripts get the IP address that called the script?
  • Download Code

Replies are listed 'Best First'.
Re^2: Can my perl scripts get the IP address that called the script?
by bartender1382 (Beadle) on Apr 08, 2022 at 19:12 UTC

    You're right I should have stated CGI.
    So I added:

    my $q = new CGI; my $userIP = $q->remote_addr();

    And it works. Is there a way to mark a question closed?

      Hello bartender1382 and welcome to the monastery and to the wonderful world of perl!

      > .. I should have stated CGI

      ..and many of us could have answered: we wait for you in XXI century :)

      No seriously and without any offending intent, you can glance CGI to understand some basic concepts but then (or from the beginning) look at something contemporary like Dancer2 or Mojolicious

      L*

      There are no rules, there are no thumbs..
      Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.
      "Is there a way to mark a question closed?"

      There's no need to do that. In fact, doing so may result in other, relevant information not being posted. Just leave the thread as is: you'll get a notification is someone else replies to you.

      — Ken

      This might be fun for you to add to those two lines:

      use Net::Whois::IP ('whoisip_query'); # This module is not installed +automatically with a # Perl installation, so you'll + need to install it # from CPAN in order to be abl +e to use its # whois_ip_query function. use Fcntl (':flock'); if ($userIP) { my $location_of_some_log_file = '/var/logs/my_log_file.log'; open ( my $log_fh, '>> :encoding(UTF-8)', $location_of_some_log_fi +le ) or die "FATAL: Trouble opening '$location_of_some_log_file' for +appending: $!"; flock ( $log_fh, LOCK_EX ); my $ip_whois_response = whoisip_query($userIP); if ($ip_whois_response) { print {$log_fh} "Running whois on IP address '", $userIP, "':\ +n\n"; foreach ( sort keys( %{$ip_whois_response} ) ) { print {$log_fh} "$_ $ip_whois_response->{$_} \n"; } } else { print {$log_fh} qq|Cannot run whois to do an IP lookup, becaus +e no response received when invoking whoisip_query method of Perl mod +ule Net::Whois::IP on IP '$userIP'\n\n|; } close $log_fh or warn "WARNING: Some trouble closing file handle f +or '$location_of_some_log_file': $!"; }
      EDITED 4/12/2022 -- corrected "use Net::Whois::IP ('whois_ip_query');" to read "use Net::Whois::IP ('whoisip_query');"