From owner-freebsd-questions@FreeBSD.ORG Mon Mar 25 22:28:25 2013 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id BB65F7EC for ; Mon, 25 Mar 2013 22:28:25 +0000 (UTC) (envelope-from danny@clari.net.au) Received: from mail36.syd.optusnet.com.au (mail36.syd.optusnet.com.au [211.29.133.76]) by mx1.freebsd.org (Postfix) with ESMTP id 5B8BB6D2 for ; Mon, 25 Mar 2013 22:28:24 +0000 (UTC) Received: from [192.168.100.102] (c114-76-1-137.eburwd4.vic.optusnet.com.au [114.76.1.137]) by mail36.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id r2PMSF6w011257 for ; Tue, 26 Mar 2013 09:28:17 +1100 Message-ID: <5150CF6F.7000208@clari.net.au> Date: Tue, 26 Mar 2013 09:27:59 +1100 From: "Daniel O'Callaghan" User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:17.0) Gecko/20130307 Thunderbird/17.0.4 MIME-Version: 1.0 To: freebsd-questions@freebsd.org Subject: Re: Remote IP to script over inetd References: <5150305F.6000205@starnet.cz> In-Reply-To: <5150305F.6000205@starnet.cz> X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.0 cv=F68P7ddN c=1 sm=1 a=rXgAR6YtUHgA:10 a=K4cG_XPOuO0A:10 a=ejE0-8HIAAAA:8 a=6thBVdW0UjkA:10 a=_IEhM8lNAAAA:8 a=M43qwlrjJFAj9w5XkFwA:9 a=wPNLvfGTeEIA:10 a=W4OOWvR-U-AA:10 a=uynsnZRTUGo7Akql4a8A:9 a=_W_S_7VecoQA:10 a=IMxBQ11oVIghpswc:21 a=+rVrtY7z3DVyADW7HUk29Q==:117 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.14 X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Mar 2013 22:28:25 -0000 Hi Radek, On 25/03/2013 10:09 PM, Radek Krejc(a wrote: > #!/bin/sh > echo $REMOTEHOST getpeername() info is not available in Bourne shell directly. You need to use perl or C or .... So you can do something like this: ---------------------- #!/usr/bin/perl # Example code from http://perldoc.perl.org/functions/getpeername.html use Socket; $hersockaddr = getpeername(SOCK); ($port, $iaddr) = sockaddr_in($hersockaddr); $herhostname = gethostbyaddr($iaddr, AF_INET); $herstraddr = inet_ntoa($iaddr); # $herstraddr is of form "12.34.56.78" # Now you know the remote IP address, do what we want to do # eg run a shell script and put IP into $1 $cmd = "/root/redirects.sh $herstraddr"; exec($cmd); ---------------------- PS, if you are just sending an HTTP redirect or similar, you don't need to run the script as root. Cheers, Danny