Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Date: Thu, 31 May 2001 21:46:03 +0300 Message-Id: <200105311846.VAA11354@linux.> From: "Ehud Karni" To: "Fabrice Rouillier" , "\" \"C. Porter Bassett\"\"" , " Francis Litterio" Subject: Re: IP Lookup command CC: cygwin AT cygwin DOT com In-reply-to: <001c01c0e9f5$dc233c90$0a00a8c0@PWORK> (message from C. Porter Bassett on Thu, 31 May 2001 11:19:33 -0600) Organization: Simon & Wiesel Insurance agency Reply-to: ehud AT unix DOT simonwiesel DOT co DOT il References: <001c01c0e9f5$dc233c90$0a00a8c0 AT PWORK> X-Mailer: Emacs 20.7.1 rmail (send-msg 1.104) MIME-Version: 1.0 X-Attached: text/X-C-source myhostip.c (3998) Content-Transfer-Encoding: quoted-printable Content-Type: multipart/mixed; boundary="-----SW___mail-send___20010531-184603-(UTC)___BOUNDRY-----" -------SW___mail-send___20010531-184603-(UTC)___BOUNDRY----- Content-Type: text/plain; charset=iso-8859-8 Content-Transfer-Encoding: 7bit On Wed, 30 May 2001 18:21:00 +0200, Fabrice Rouillier wrote: > > How can I get system information within cygwin env. > > My need is to get hostid. On Thu, 31 May 2001 11:19:33 -0600, C. Porter Bassett wrote: > > I need a command that I can call in the following manner: > $ unknown_command host_on_my_network > 192.168.20.119 Attached is a program I wrote some time ago, it is very similar to the code sent by Francis Litterio . It was tested on Linux and Cygwin. Run it without any arguments to get your hostname and IP (i.e. myhostip). On a machine with more than one NIC (e.g. real NIC and Dial connection) you'll get both IPs. You can use the program with -1 or -2 to get the 1st or 2nd IP in scripts (i.e. IP=`myhostip -1`). To get the IP for a HOST do: IP=`myhostip -1 HOST` To see all the IPs for a HOST do: myhostip HOST (e.g. myhostip cnn.com). Ehud. -- Ehud Karni Mivtach - Simon Insurance /"\ Tel: +972-3-6212-757 Fax: +972-3-6292-544 \ / ASCII Ribbon Campaign (USA) Fax and voice mail: 1-815-5509341 X Against HTML Mail Better Safe Than Sorry / \ mailto:ehud AT unix DOT simonwiesel DOT co DOT il http://www.simonwiesel.co.il -------SW___mail-send___20010531-184603-(UTC)___BOUNDRY----- Content-Type: text/X-C-source; charset=iso-8859-8; name="myhostip.c" Content-Transfer-Encoding: 7bit /* ip-check - Display IP for host use: myhostip [-n/-<1-9>] [host-name] if host-name is not given - use local host name. optional 1st arg: omitted - report all ip's of this name -n/-0 - report name only (same as `hostname' or argv[1]) -i/-1 - report 1st ip only -<2-9> - report ip #2 ... #9 */ #include #include #include #include /* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */ int main ( int argc , char *argv [ ] ) { struct hostent *hent ; /* host entry */ char svname [ 250 ] = "" ; /* empty host for start */ int req = -1 ; /* request -1=normal, 0-name, 1-n=ip[n] */ int ix = 0 ; unsigned char *ad ; char *myname = svname ; int p = 1 ; while ( p < argc ) { if ( argv [ p ] [ 0 ] == '-' ) /* parameter (not host name) */ switch ( argv [ p ] [ 1 ] | ('a' ^ 'A') ) /* 2nd char (lower case) */ { case 'n': /* -n[ame] */ req = 0 ; break ; /* OK */ case 'i': /* -i[p] */ req = 1 ; break ; /* OK */ case '0': /* -0 = -name */ case '1': /* -1 = -ip */ case '2': /* -2 = ip 2 */ case '3': /* -3 = ip 3 */ case '4': /* -4 = ip 4 */ case '5': /* -5 = ip 5 */ case '6': /* -6 = ip 6 */ case '7': /* -7 = ip 7 */ case '8': /* -8 = ip 8 */ case '9': /* -9 = ip 9 */ req = argv [ p ] [ 1 ] - '0' ; break ; /* OK */ default: fprintf ( stderr , "Arg %d (%s) illegal, should be -n, -i -[2-9]\n" , p , argv [ p ] ) ; exit ( 3 ) ; } else myname = argv [ p ] ; /* use this as host name */ p++ ; /* next arg */ } if ( ( *myname == 0 ) && /* empty host name */ ( gethostname ( myname , 250 ) < 0 ) ) /* get hostname - must be successfull */ { fprintf ( stderr , "Gethostname failed\n" ) ; exit ( 1 ) ; } if ( req < 0 ) /* no stdout request */ fprintf ( stderr , "Hostname to check is %s\n" , myname ) ; if ( req == 0 ) /* my hostname only */ { printf ( "%s\n" , myname ) ; /* name + Newline */ exit ( 0 ) ; /* exit (OK) */ } hent = gethostbyname ( myname ) ; /* search host */ if ( hent == NULL ) { fprintf ( stderr , "Gethostbyname failed\n" ) ; exit ( 2 ) ; } req -- ; /* -2 or 0-8 */ while ( hent -> h_addr_list [ ix ] != NULL ) { ad = hent -> h_addr_list [ ix ] ; if ( req == ix ) { printf ( "%d.%d.%d.%d\n" , *ad , *(ad+1) , *(ad+2) , *(ad+3) ) ; exit ( 0 ) ; /* exit (OK) */ } if ( req < 0 ) /* output every address ? */ fprintf ( stderr , "Address %d: %d.%d.%d.%d\n" , ix + 1 , *ad , *(ad+1) , *(ad+2) , *(ad+3) ) ; ix ++ ; /* next ip address */ } exit ( 0 ) ; } /*===========================================================================*/ -------SW___mail-send___20010531-184603-(UTC)___BOUNDRY----- Content-Type: text/plain; charset=us-ascii -- Want to unsubscribe from this list? Check out: http://cygwin.com/ml/#unsubscribe-simple -------SW___mail-send___20010531-184603-(UTC)___BOUNDRY-------