Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!uunet!mcsun!hp4nl!ruuinf!praxis!edwin From: edwin@praxis.cs.ruu.nl (Edwin Kremer) Newsgroups: comp.unix.questions Subject: Re: nslookup and IP addresses Message-ID: <2107@ruuinf.cs.ruu.nl> Date: 28 Nov 89 12:52:24 GMT References: <6026@lindy.Stanford.EDU> <6027@lindy.Stanford.EDU> <2104@ruuinf.cs.ruu.nl> Sender: news@ruuinf.cs.ruu.nl Lines: 137 In article <2104@ruuinf.cs.ruu.nl> edwin@cs.ruu.nl (Edwin Kremer) writes: > In article <6027@lindy.Stanford.EDU> odin@ucscb.UCSC.EDU (Jon Granrose) > writes: > > Can anyone tell me a reliable way to find the site name associated > > with a given IP address? Example: say I have address 128.114.133.1 > > which happens to be a local machine ssyx.ucsc.edu. To what responds with: > This is how I usually do it (I don't know if there are > easier ways): ... lots of stuff deleted ... I didn't like my solution that much after all, so I decided to write a very small C program to solve this problem. I know this is not the right group to post sources, but I thought it's to small to bother the comp.sources.unix moderator, so here it is in a shell archive at the end of this message. Instructions on how to make are in the Makefile. I've tried this program on both HP-UX 6.5 (yes, we're running a nameserver on our HP9000/370) and SunOS 4.0.3 on an old ;-) Sun 3/60. Good luck, --[ Edwin ]-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'Makefile' <<'END_OF_FILE' X############################################################################### X# I used this one on HP-UX 6.5 X############################################################################### XCFLAGS = +O1 XLDFLAGS = -L /local/usr/lib/bind -lresolv -lBSD -q -s X X############################################################################### X# I used this one on SunOS 4.0.3 X############################################################################### XCFLAGS = -O XLDFLAGS = -lresolv -s X X############################################################################### X# Change this to whatever you prefer X############################################################################### XBIN = /local/bin XUSER = edwin XGROUP = staff XMODE = 0711 X X############################################################################### X# Shouldn't need to change anything below X############################################################################### Xiname : iname.o X $(CC) $? -o $@ $(LDFLAGS) X Xinstall : iname X cp $? $(BIN)/$? X cd $(BIN) ; chown $(USER) $? ; chgrp $(GROUP) $? ; chmod $(MODE) $? END_OF_FILE if test 1089 -ne `wc -c <'Makefile'`; then echo shar: \"'Makefile'\" unpacked with wrong size! fi # end of 'Makefile' fi if test -f 'iname.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'iname.c'\" else echo shar: Extracting \"'iname.c'\" \(1002 characters\) sed "s/^X//" >'iname.c' <<'END_OF_FILE' X/* X * @(#) iname.c 1.0 89/11/28 EHK X * X * iname - return fully qualified domain name of X * given internet address. X */ X X#include X#include X#include X#include X#include X Xstatic char *RcsId = "$Header: iname.c,v 1.1 89/11/28 13:16:22 edwin Exp $"; X Xstatic struct in_addr in; /* Internet address structure */ Xstatic char *p; /* Name of this program */ X Xmain(argc, argv) X int argc; X char *argv[]; X{ X struct hostent *he; /* Host info returned if successful */ X char *inet; /* ASCII representation of adress */ X X p = argv[0]; X X if ( argc != 2 ) X printf("Usage: %s dot_notation_inet_address\n", p), exit(-1); X X inet = argv[1]; /* Get internet address */ X in.s_addr = inet_addr(inet); /* network byte order */ X X he = gethostbyaddr((char *) &in, sizeof(struct in_addr), AF_INET); X if ( he == (struct hostent *) 0 ) X fprintf(stderr, "%s: can't resolve %s\n", p, inet), exit(-1); X X printf("%s = %s\n", inet, he->h_name); X X exit(0); X} END_OF_FILE if test 1002 -ne `wc -c <'iname.c'`; then echo shar: \"'iname.c'\" unpacked with wrong size! fi # end of 'iname.c' fi echo shar: End of shell archive. exit 0 -- Edwin Kremer, Department of Computer Science, University of Utrecht Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands Phone : +31 - 30 - 534104 | Telefax: +31 - 30 - 513791 E-Mail: edwin@cs.ruu.nl | UUCP to: ...!hp4nl!ruuinf!edwin