Skip to content

Commit

Permalink
s3:script: Remove findsmb from default installation
Browse files Browse the repository at this point in the history
This tool is the only client tool which requires perl. Distributions are
removing perl from the default installation now.

Also this is a wrapper around nmblookup which is obsolete in the AD
world. However it might still be used by someone so move it just to
examples/scripts/nmb/

Signed-off-by: Andreas Schneider <[email protected]>
Reviewed-by: Guenther Deschner <[email protected]>

Autobuild-User(master): Andreas Schneider <[email protected]>
Autobuild-Date(master): Mon Apr 19 14:37:04 UTC 2021 on sn-devel-184
  • Loading branch information
cryptomilk committed Apr 19, 2021
1 parent aa2ab7f commit cc4e6a9
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 60 deletions.
7 changes: 0 additions & 7 deletions docs-xml/manpages/samba.7.xml
Original file line number Diff line number Diff line change
Expand Up @@ -186,13 +186,6 @@
can be used to maintain the local user database on
a Samba server.</para></listitem></varlistentry>

<varlistentry>
<term><citerefentry><refentrytitle>findsmb</refentrytitle>
<manvolnum>1</manvolnum></citerefentry></term>
<listitem><para>The <command>findsmb</command> command
can be used to find SMB servers on the local network.
</para></listitem></varlistentry>

<varlistentry>
<term><citerefentry><refentrytitle>net</refentrytitle>
<manvolnum>8</manvolnum></citerefentry></term>
Expand Down
1 change: 0 additions & 1 deletion docs-xml/wscript_build
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ manpages='''
manpages/cifsdd.8
manpages/dbwrap_tool.1
manpages/eventlogadm.8
manpages/findsmb.1
manpages/idmap_ad.8
manpages/idmap_autorid.8
manpages/idmap_hash.8
Expand Down
23 changes: 11 additions & 12 deletions source3/script/findsmb.in → examples/scripts/nmb/findsmb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!@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
Expand All @@ -13,14 +13,14 @@
# 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;
Expand All @@ -38,7 +38,7 @@ if ($_) { # set broadcast address if it was specified

######################################################################
# do numeric sort on last field of IP address
sub ipsort
sub ipsort
{
@t1 = split(/\./,$a);
@t2 = split(/\./,$b);
Expand All @@ -48,7 +48,7 @@ sub ipsort

# 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,
Expand All @@ -68,10 +68,10 @@ foreach $ip (@ipaddrs) # loop through each IP address found

# 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

Expand All @@ -80,7 +80,7 @@ foreach $ip (@ipaddrs) # loop through each IP address found

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";
Expand All @@ -92,7 +92,7 @@ foreach $ip (@ipaddrs) # loop through each IP address found
/(.{1,15})\s+<00>\s+/;
$name = $1;
$name =~ s/^\s+//g;
}
}

# do an smbclient command on the netbios name.

Expand Down Expand Up @@ -146,7 +146,7 @@ foreach $ip (@ipaddrs) # loop through each IP address found

} 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";
Expand All @@ -157,5 +157,4 @@ foreach $ip (@ipaddrs) # loop through each IP address found
}
print "$ip".' 'x(16-length($ip))."$name\n";
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

<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>

Expand All @@ -26,19 +26,19 @@

<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>
Expand All @@ -49,16 +49,16 @@
<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>
Expand All @@ -68,38 +68,38 @@
<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]
Expand Down Expand Up @@ -135,10 +135,10 @@ IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION

<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>

Expand Down
13 changes: 0 additions & 13 deletions source3/script/wscript_build
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,3 @@ bld.INSTALL_FILES('${BINDIR}',
bld.SAMBA_SCRIPT('smbaddshare', pattern='smbaddshare', installdir='.')
bld.SAMBA_SCRIPT('smbchangeshare', pattern='smbchangeshare', installdir='.')
bld.SAMBA_SCRIPT('smbdeleteshare', pattern='smbdeleteshare', installdir='.')

sed_expr1 = 's#@PERL@#/usr/bin/env perl#'
sed_expr2 = 's#@BINDIR@#${BINDIR}#'

bld.SAMBA_GENERATOR('findsmb-script',
source='findsmb.in',
target='findsmb',
rule='sed -e "%s" -e "%s" ${SRC} > ${TGT}' % (sed_expr1, sed_expr2))

bld.INSTALL_FILES('${BINDIR}',
'findsmb',
destname='findsmb',
chmod=MODE_755)

0 comments on commit cc4e6a9

Please sign in to comment.