-#!@PERL@
+#!/usr/bin/env perl
#
# Prints info on all smb responding machines on a subnet.
# This script needs to be run on a machine without nmbd running and be
# local master browsers for that workgroup. There will be an "*" in front
# of the workgroup name for machines that are the domain master browser for
# that workgroup.
-#
+#
# Options:
#
# -d|-D enable debug
# -r add -r option to nmblookup when finding netbios name
#
-$SAMBABIN = "@BINDIR@";
+$SAMBABIN = "/usr/bin";
for ($i = 0; $i < 2; $i++) { # test for -d and -r options
$_ = shift;
######################################################################
# do numeric sort on last field of IP address
-sub ipsort
+sub ipsort
{
@t1 = split(/\./,$a);
@t2 = split(/\./,$b);
# look for all machines that respond to a name lookup
-open(NMBLOOKUP,"$SAMBABIN/nmblookup $BCAST '*' --debuglevel=0|") ||
+open(NMBLOOKUP,"$SAMBABIN/nmblookup $BCAST '*' --debuglevel=0|") ||
die("Can't run nmblookup '*'.\n");
# get rid of all lines that are not a response IP address,
# find the netbios names registered by each machine
- open(NMBLOOKUP,"$SAMBABIN/nmblookup $R_OPTION -A $ip --debuglevel=0|") ||
+ open(NMBLOOKUP,"$SAMBABIN/nmblookup $R_OPTION -A $ip --debuglevel=0|") ||
die("Can't get nmb name list.\n");
@nmblookup = <NMBLOOKUP>;
- close NMBLOOKUP;
+ close NMBLOOKUP;
# get the first <00> name
if ($_) { # we have a netbios name
if (/GROUP/) { # is it a group name
- ($name, $aliases, $type, $length, @addresses) =
+ ($name, $aliases, $type, $length, @addresses) =
gethostbyaddr(pack('C4',split('\.',$ip)),2);
if (! $name) { # could not get name
$name = "unknown nis name";
/(.{1,15})\s+<00>\s+/;
$name = $1;
$name =~ s/^\s+//g;
- }
+ }
# do an smbclient command on the netbios name.
} else { # no netbios name found
# try getting the host name
- ($name, $aliases, $type, $length, @addresses) =
+ ($name, $aliases, $type, $length, @addresses) =
gethostbyaddr(pack('C4',split('\.',$ip)),2);
if (! $name) { # could not get name
$name = "unknown nis name";
}
print "$ip".' 'x(16-length($ip))."$name\n";
}
-}
-
+}
<refnamediv>
<refname>findsmb</refname>
- <refpurpose>list info about machines that respond to SMB
+ <refpurpose>list info about machines that respond to SMB
name queries on a subnet</refpurpose>
</refnamediv>
<refsect1>
<title>DESCRIPTION</title>
-
+
<para>This perl script is part of the <citerefentry>
<refentrytitle>samba</refentrytitle><manvolnum>7</manvolnum></citerefentry>
suite.</para>
<para><command>findsmb</command> is a perl script that
- prints out several pieces of information about machines
+ prints out several pieces of information about machines
on a subnet that respond to SMB name query requests.
It uses <citerefentry><refentrytitle>nmblookup</refentrytitle><manvolnum>1</manvolnum></citerefentry>
and <citerefentry><refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum></citerefentry>
to obtain this information.
</para>
-</refsect1>
+</refsect1>
<refsect1>
<title>OPTIONS</title>
<listitem><para>Controls whether <command>findsmb</command> takes
bugs in Windows95 into account when trying to find a Netbios name
registered of the remote machine. This option is disabled by default
- because it is specific to Windows 95 and Windows 95 machines only.
+ because it is specific to Windows 95 and Windows 95 machines only.
If set, <citerefentry><refentrytitle>nmblookup</refentrytitle><manvolnum>1</manvolnum></citerefentry>
will be called with <constant>-B</constant> option.</para></listitem>
</varlistentry>
<varlistentry>
<term>subnet broadcast address</term>
<listitem><para>Without this option, <command>findsmb
- </command> will probe the subnet of the machine where
+ </command> will probe the subnet of the machine where
<citerefentry><refentrytitle>findsmb</refentrytitle><manvolnum>1</manvolnum></citerefentry>
- is run. This value is passed to
+ is run. This value is passed to
<citerefentry><refentrytitle>nmblookup</refentrytitle><manvolnum>1</manvolnum></citerefentry>
as part of the <constant>-B</constant> option.</para></listitem>
</varlistentry>
<refsect1>
<title>EXAMPLES</title>
- <para>The output of <command>findsmb</command> lists the following
- information for all machines that respond to the initial
- <command>nmblookup</command> for any name: IP address, NetBIOS name,
+ <para>The output of <command>findsmb</command> lists the following
+ information for all machines that respond to the initial
+ <command>nmblookup</command> for any name: IP address, NetBIOS name,
Workgroup name, operating system, and SMB server version.</para>
- <para>There will be a '+' in front of the workgroup name for
- machines that are local master browsers for that workgroup. There
- will be an '*' in front of the workgroup name for
- machines that are the domain master browser for that workgroup.
- Machines that are running Windows for Workgroups, Windows 95 or
- Windows 98 will
- not show any information about the operating system or server
+ <para>There will be a '+' in front of the workgroup name for
+ machines that are local master browsers for that workgroup. There
+ will be an '*' in front of the workgroup name for
+ machines that are the domain master browser for that workgroup.
+ Machines that are running Windows for Workgroups, Windows 95 or
+ Windows 98 will
+ not show any information about the operating system or server
version.</para>
<para>The command with <constant>-r</constant> option
must be run on a system without <citerefentry>
<refentrytitle>nmbd</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry> running.
+ </citerefentry> running.
- If <command>nmbd</command> is running on the system, you will
- only get the IP address and the DNS name of the machine. To
- get proper responses from Windows 95 and Windows 98 machines,
+ If <command>nmbd</command> is running on the system, you will
+ only get the IP address and the DNS name of the machine. To
+ get proper responses from Windows 95 and Windows 98 machines,
the command must be run as root and with <constant>-r</constant>
option on a machine without <command>nmbd</command> running.</para>
- <para>For example, running <command>findsmb</command>
+ <para>For example, running <command>findsmb</command>
without <constant>-r</constant> option set would yield output similar
to the following</para>
<programlisting>
-IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
----------------------------------------------------------------------
+IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
+---------------------------------------------------------------------
192.168.35.10 MINESET-TEST1 [DMVENGR]
192.168.35.55 LINUXBOX *[MYGROUP] [Unix] [Samba 2.0.6]
192.168.35.56 HERBNT2 [HERB-NT]
<refsect1>
<title>AUTHOR</title>
-
- <para>The original Samba software and related utilities
+
+ <para>The original Samba software and related utilities
were created by Andrew Tridgell. Samba is now developed
- by the Samba Team as an Open Source project similar
+ by the Samba Team as an Open Source project similar
to the way the Linux kernel is developed.</para>
</refsect1>