[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: find local computers

On March 2, 2004 08:13 am, Marty Landman wrote:
> At 08:48 PM 3/1/2004, Pete Nesbitt wrote:
> >ping cannot resolve a name, it can resolve a name to IP prior to sending
> >the packet, but it really doesn't care about names.
> So I can say ping -c1 penguin instead of ping -c1 if I
> already know the names of all my boxes on the lan. But what I want to do is
> have a way to find all those boxes, ip addr and host name. The host cmd
> seems fine for this, i.e. I've modified the script to run `host` for each
> ip adr found on the lan, though I haven't finished parsing it yet.
> >You may want to look at 'ping -b'  so send a broadcast ping, then collect
> >the results.
> I don't understand the man page, could you give an example please? I'd like
> to ping everything for
> 192.168.0. with netmask
> This is what I'm doing with the script now in fact, only I realize it's
> probably the hard way. At least I learned a little bash and awk though.
> >won't help the name resolution at all.
> But doing a host for each pingable ip works fine tbh so I'm happy with
> that.
> This script could actually be used to put together canonical hosts files,
> although it'd be lacking in hosts other than the server name for apache
> virtual hosts... hope I'm saying that right.
> Marty Landman   Face 2 Interface Inc.   845-679-9387
> FormATable  DB: http://face2interface.com/Products/FormATable.shtml
> Make a Website: http://face2interface.com/Home/Demo.shtml
> Free Formmailer: http://face2interface.com/Products/Formal.shtml

Hi Marty,
to ping the network use:
ping -c1 -b (just use the broadcast ip for the network)

This will not work across a router. It also appears to show all but the 
primary system as duplicates packets, which would be bad, except that 
we are pinging the whole lan.

Here is a sample, but I only have 2 systems that are pingable (paranoia):
pete nebula temp$ ping -c1 -b
WARNING: pinging broadcast address
PING ( 56(84) bytes of data.
64 bytes from icmp_seq=0 ttl=64 time=0.061 ms
64 bytes from icmp_seq=0 ttl=64 time=0.192 ms (DUP!)

Do you have a local dns server?  I beleive you need a reverse DNS lookup 
for the 'host' command name to work.
If you have a local dns server for the LAN, then try this:
(mine fails as I have no reverseDNS)

I set this not to wrap, but your email client may...
1st: test at command line:
pete nebula temp$ ping -c1 -b 2>/dev/null|grep "^64"|awk '{print $4}'|awk -F: '{print $1}'>>/tmp/ip_numbers
pete nebula temp$ while read IP_NUM; do host $IP_NUM; done < /tmp/ip_numbers
Host not found: 3(NXDOMAIN)
Host not found: 3(NXDOMAIN)
pete nebula temp$

so in a script:
echo "">$IP_NUMBERS
echo "">$IP_HOST_FILE
ping -c1 -b $LAN_BDCAST 2>/dev/null|grep "^64"|awk '{print $4}'|awk -F: '{print $1}'>>$IP_NUMBERS
while read IP_NUM
  host $IP_NUM >> $IP_HOST_FILE
 done <$IP_NUMBERS
...you get the idea.

Expanding your script to create the named files would be a great exersice, 
however, it would be of questionable value, because as I see it, you will need 
to have the DNS & reverseDNS working before you can retreive the names to 
match to IP's.

I don't know how you could get the Virtual Hosts if they are name based. 
They do need to be in DNS, so if you knew all the VH's you could ping the 
name to get the IP, but that is a different script again. The thing is you can 
only ping an IP, (pinging a name just causes a dns lookup prior to the ping) 
and the name based virtual host aspect is relavent to Apache and to DNS 
(or /etc/hosts), not the IP address.

Hope that helps.
Pete Nesbitt, rhce

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]